summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRosandra Cuello <rosandra.cuello@gmail.com>2011-11-23 11:31:21 -0400
committerRosandra Cuello <rosandra.cuello@gmail.com>2011-11-23 11:31:21 -0400
commit63e211e4b7b90ab9d53ed18a556348fc644b1cc1 (patch)
treea183c6e3db1c23504c61c844c19fd7c061b3df55
parent691e25a0e69b2451f07954382078b2693dbbb478 (diff)
parent3a9feb5136f4fc0cacdb7167cf8d07f1176ec983 (diff)
downloadaskbot-63e211e4b7b90ab9d53ed18a556348fc644b1cc1.tar.gz
askbot-63e211e4b7b90ab9d53ed18a556348fc644b1cc1.tar.bz2
askbot-63e211e4b7b90ab9d53ed18a556348fc644b1cc1.zip
Merge remote-tracking branch 'upstream/master'
Conflicts: askbot/skins/default/templates/macros.html askbot/skins/default/templates/main_page/content.html askbot/skins/default/templates/main_page/sidebar.html askbot/skins/default/templates/main_page/tab_bar.html askbot/skins/default/templates/question.html askbot/views/readers.py Some files updated to match new urls scheme
-rwxr-xr-x.gitignore8
-rw-r--r--askbot/__init__.py2
-rw-r--r--askbot/admin.py8
-rw-r--r--askbot/conf/__init__.py1
-rw-r--r--askbot/conf/access_control.py21
-rw-r--r--askbot/conf/login_providers.py10
-rw-r--r--askbot/conf/spam_and_moderation.py1
-rw-r--r--askbot/conf/vote_rules.py10
-rw-r--r--askbot/const/__init__.py4
-rw-r--r--askbot/context.py3
-rw-r--r--askbot/deps/django_authopenid/views.py8
-rw-r--r--askbot/doc/source/changelog.rst14
-rw-r--r--askbot/doc/source/contributors.rst8
-rw-r--r--askbot/doc/source/customizing-skin-in-askbot.rst145
-rw-r--r--askbot/doc/source/management-commands.rst2
-rw-r--r--askbot/feed.py26
-rw-r--r--askbot/forms.py64
-rw-r--r--askbot/locale/ca/LC_MESSAGES/django.mobin0 -> 19111 bytes
-rw-r--r--askbot/locale/ca/LC_MESSAGES/django.po4903
-rw-r--r--askbot/locale/ca/LC_MESSAGES/djangojs.mobin0 -> 1181 bytes
-rw-r--r--askbot/locale/ca/LC_MESSAGES/djangojs.po341
-rw-r--r--askbot/locale/de/LC_MESSAGES/django.mobin50109 -> 18495 bytes
-rw-r--r--askbot/locale/de/LC_MESSAGES/django.po3190
-rw-r--r--askbot/locale/de/LC_MESSAGES/djangojs.mobin408 -> 2750 bytes
-rw-r--r--askbot/locale/de/LC_MESSAGES/djangojs.po313
-rw-r--r--askbot/locale/en/LC_MESSAGES/django.mobin20706 -> 4450 bytes
-rw-r--r--askbot/locale/en/LC_MESSAGES/django.po4845
-rw-r--r--askbot/locale/en/LC_MESSAGES/djangojs.mobin407 -> 2069 bytes
-rw-r--r--askbot/locale/en/LC_MESSAGES/djangojs.po314
-rw-r--r--askbot/locale/es/LC_MESSAGES/django.mobin31301 -> 15267 bytes
-rw-r--r--askbot/locale/es/LC_MESSAGES/django.po52
-rw-r--r--askbot/locale/es/LC_MESSAGES/djangojs.mobin408 -> 2884 bytes
-rw-r--r--askbot/locale/es/LC_MESSAGES/djangojs.po316
-rw-r--r--askbot/locale/fi/LC_MESSAGES/django.mobin51493 -> 20416 bytes
-rw-r--r--askbot/locale/fi/LC_MESSAGES/django.po3056
-rw-r--r--askbot/locale/fi/LC_MESSAGES/djangojs.mobin408 -> 1726 bytes
-rw-r--r--askbot/locale/fi/LC_MESSAGES/djangojs.po311
-rw-r--r--askbot/locale/fr/LC_MESSAGES/django.mobin88376 -> 48025 bytes
-rw-r--r--askbot/locale/fr/LC_MESSAGES/django.po3165
-rw-r--r--askbot/locale/fr/LC_MESSAGES/djangojs.mobin407 -> 2767 bytes
-rw-r--r--askbot/locale/fr/LC_MESSAGES/djangojs.po318
-rw-r--r--askbot/locale/it/LC_MESSAGES/django.mobin82876 -> 71456 bytes
-rw-r--r--askbot/locale/it/LC_MESSAGES/django.po3870
-rw-r--r--askbot/locale/it/LC_MESSAGES/djangojs.mobin408 -> 3748 bytes
-rw-r--r--askbot/locale/it/LC_MESSAGES/djangojs.po334
-rw-r--r--askbot/locale/ja/LC_MESSAGES/django.mobin37520 -> 12366 bytes
-rw-r--r--askbot/locale/ja/LC_MESSAGES/django.po3088
-rw-r--r--askbot/locale/ja/LC_MESSAGES/djangojs.mobin401 -> 401 bytes
-rw-r--r--askbot/locale/ja/LC_MESSAGES/djangojs.po307
-rw-r--r--askbot/locale/ko/LC_MESSAGES/django.mobin19986 -> 4238 bytes
-rw-r--r--askbot/locale/ko/LC_MESSAGES/django.po2283
-rw-r--r--askbot/locale/ko/LC_MESSAGES/djangojs.mobin401 -> 401 bytes
-rw-r--r--askbot/locale/ko/LC_MESSAGES/djangojs.po307
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/django.mobin8806 -> 8655 bytes
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/django.po1880
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/djangojs.mobin407 -> 407 bytes
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/djangojs.po308
-rw-r--r--askbot/locale/ro/LC_MESSAGES/django.mobin83286 -> 45766 bytes
-rw-r--r--askbot/locale/ro/LC_MESSAGES/django.po2766
-rw-r--r--askbot/locale/ro/LC_MESSAGES/djangojs.mobin472 -> 472 bytes
-rw-r--r--askbot/locale/ro/LC_MESSAGES/djangojs.po309
-rw-r--r--askbot/locale/ru/LC_MESSAGES/django.mobin129267 -> 75862 bytes
-rw-r--r--askbot/locale/ru/LC_MESSAGES/django.po3225
-rw-r--r--askbot/locale/ru/LC_MESSAGES/djangojs.mobin1407 -> 7112 bytes
-rw-r--r--askbot/locale/ru/LC_MESSAGES/djangojs.po317
-rw-r--r--askbot/locale/sr/LC_MESSAGES/django.mobin37548 -> 14731 bytes
-rw-r--r--askbot/locale/sr/LC_MESSAGES/django.po2977
-rw-r--r--askbot/locale/sr/LC_MESSAGES/djangojs.mobin482 -> 482 bytes
-rw-r--r--askbot/locale/sr/LC_MESSAGES/djangojs.po309
-rw-r--r--askbot/locale/tr/LC_MESSAGES/django.mobin54328 -> 29767 bytes
-rw-r--r--askbot/locale/tr/LC_MESSAGES/django.po3176
-rw-r--r--askbot/locale/tr/LC_MESSAGES/djangojs.mobin407 -> 2759 bytes
-rw-r--r--askbot/locale/tr/LC_MESSAGES/djangojs.po315
-rw-r--r--askbot/locale/vi/LC_MESSAGES/django.mobin17130 -> 1929 bytes
-rw-r--r--askbot/locale/vi/LC_MESSAGES/django.po2334
-rw-r--r--askbot/locale/vi/LC_MESSAGES/djangojs.mobin401 -> 401 bytes
-rw-r--r--askbot/locale/vi/LC_MESSAGES/djangojs.po307
-rw-r--r--askbot/locale/zh-tw/LC_MESSAGES/django.mobin33183 -> 13003 bytes
-rw-r--r--askbot/locale/zh-tw/LC_MESSAGES/django.po2930
-rw-r--r--askbot/locale/zh-tw/LC_MESSAGES/djangojs.mobin402 -> 2603 bytes
-rw-r--r--askbot/locale/zh-tw/LC_MESSAGES/djangojs.po311
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/django.mobin85081 -> 48231 bytes
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/django.po3002
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/djangojs.mobin401 -> 2708 bytes
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/djangojs.po311
-rw-r--r--askbot/management/commands/askbot_add_test_content.py228
-rw-r--r--askbot/management/commands/send_email.py24
-rw-r--r--askbot/management/commands/send_email_alerts.py8
-rw-r--r--askbot/middleware/anon_user.py3
-rw-r--r--askbot/middleware/forum_mode.py35
-rw-r--r--askbot/migrations/0050_move_qa_revisions_to_postrevision.py14
-rw-r--r--askbot/models/__init__.py21
-rw-r--r--askbot/models/answer.py242
-rw-r--r--askbot/models/base.py102
-rw-r--r--askbot/models/content.py428
-rw-r--r--askbot/models/meta.py4
-rw-r--r--askbot/models/post.py112
-rw-r--r--askbot/models/question.py230
-rw-r--r--askbot/search/sphinx/sphinx.conf10
-rw-r--r--askbot/setup_templates/settings.py8
-rw-r--r--askbot/setup_templates/settings.py.mustache11
-rw-r--r--askbot/skins/common/media/images/anon.pngbin0 -> 687 bytes
-rw-r--r--askbot/skins/common/media/images/bigbutton.pngbin0 -> 263 bytes
-rw-r--r--askbot/skins/common/media/images/bigbuttonhover.pngbin0 -> 236 bytes
-rwxr-xr-xaskbot/skins/common/media/images/blue-up-arrow-h18px.pngbin0 -> 593 bytes
-rwxr-xr-xaskbot/skins/common/media/images/box-arrow.gifbin0 -> 69 bytes
-rwxr-xr-xaskbot/skins/common/media/images/bullet_green.gifbin0 -> 64 bytes
-rwxr-xr-xaskbot/skins/common/media/images/cc-88x31.pngbin0 -> 5460 bytes
-rw-r--r--askbot/skins/common/media/images/cc-by-sa.pngbin0 -> 5083 bytes
-rwxr-xr-xaskbot/skins/common/media/images/close-small-dark.pngbin0 -> 226 bytes
-rwxr-xr-xaskbot/skins/common/media/images/close-small-hover.pngbin0 -> 337 bytes
-rwxr-xr-xaskbot/skins/common/media/images/close-small.pngbin0 -> 293 bytes
-rw-r--r--askbot/skins/common/media/images/contributorsback.pngbin0 -> 714 bytes
-rwxr-xr-xaskbot/skins/common/media/images/dash.gifbin0 -> 44 bytes
-rw-r--r--askbot/skins/common/media/images/dialog-warning-off.pngbin0 -> 419 bytes
-rw-r--r--askbot/skins/common/media/images/dialog-warning.pngbin0 -> 603 bytes
-rwxr-xr-xaskbot/skins/common/media/images/djangomade124x25_grey.gifbin0 -> 2035 bytes
-rwxr-xr-xaskbot/skins/common/media/images/dot-g.gifbin0 -> 61 bytes
-rwxr-xr-xaskbot/skins/common/media/images/dot-list.gifbin0 -> 56 bytes
-rwxr-xr-xaskbot/skins/common/media/images/edit.pngbin0 -> 758 bytes
-rwxr-xr-xaskbot/skins/common/media/images/expander-arrow-hide.gifbin0 -> 126 bytes
-rwxr-xr-xaskbot/skins/common/media/images/expander-arrow-show.gifbin0 -> 135 bytes
-rw-r--r--askbot/skins/common/media/images/favicon.gifbin0 -> 898 bytes
-rw-r--r--askbot/skins/common/media/images/favicon.icobin0 -> 1150 bytes
-rw-r--r--askbot/skins/common/media/images/feed-icon-small.pngbin0 -> 669 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ad.gif (renamed from askbot/skins/default/media/images/flags/ad.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ae.gif (renamed from askbot/skins/default/media/images/flags/ae.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/af.gif (renamed from askbot/skins/default/media/images/flags/af.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ag.gif (renamed from askbot/skins/default/media/images/flags/ag.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ai.gif (renamed from askbot/skins/default/media/images/flags/ai.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/al.gif (renamed from askbot/skins/default/media/images/flags/al.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/am.gif (renamed from askbot/skins/default/media/images/flags/am.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/an.gif (renamed from askbot/skins/default/media/images/flags/an.gif)bin368 -> 368 bytes
-rw-r--r--askbot/skins/common/media/images/flags/ao.gif (renamed from askbot/skins/default/media/images/flags/ao.gif)bin244 -> 244 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ar.gif (renamed from askbot/skins/default/media/images/flags/ar.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/as.gif (renamed from askbot/skins/default/media/images/flags/as.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/at.gif (renamed from askbot/skins/default/media/images/flags/at.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/au.gif (renamed from askbot/skins/default/media/images/flags/au.gif)bin378 -> 378 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/aw.gif (renamed from askbot/skins/default/media/images/flags/aw.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ax.gif (renamed from askbot/skins/default/media/images/flags/ax.gif)bin376 -> 376 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/az.gif (renamed from askbot/skins/default/media/images/flags/az.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ba.gif (renamed from askbot/skins/default/media/images/flags/ba.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bb.gif (renamed from askbot/skins/default/media/images/flags/bb.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bd.gif (renamed from askbot/skins/default/media/images/flags/bd.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/be.gif (renamed from askbot/skins/default/media/images/flags/be.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bf.gif (renamed from askbot/skins/default/media/images/flags/bf.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bg.gif (renamed from askbot/skins/default/media/images/flags/bg.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bh.gif (renamed from askbot/skins/default/media/images/flags/bh.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bi.gif (renamed from askbot/skins/default/media/images/flags/bi.gif)bin374 -> 374 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bj.gif (renamed from askbot/skins/default/media/images/flags/bj.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bm.gif (renamed from askbot/skins/default/media/images/flags/bm.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bn.gif (renamed from askbot/skins/default/media/images/flags/bn.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bo.gif (renamed from askbot/skins/default/media/images/flags/bo.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/br.gif (renamed from askbot/skins/default/media/images/flags/br.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bs.gif (renamed from askbot/skins/default/media/images/flags/bs.gif)bin351 -> 351 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bt.gif (renamed from askbot/skins/default/media/images/flags/bt.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bv.gif (renamed from askbot/skins/default/media/images/flags/bv.gif)bin376 -> 376 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bw.gif (renamed from askbot/skins/default/media/images/flags/bw.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/by.gif (renamed from askbot/skins/default/media/images/flags/by.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/bz.gif (renamed from askbot/skins/default/media/images/flags/bz.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ca.gif (renamed from askbot/skins/default/media/images/flags/ca.gif)bin376 -> 376 bytes
-rw-r--r--askbot/skins/common/media/images/flags/catalonia.gif (renamed from askbot/skins/default/media/images/flags/catalonia.gif)bin238 -> 238 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cc.gif (renamed from askbot/skins/default/media/images/flags/cc.gif)bin371 -> 371 bytes
-rw-r--r--askbot/skins/common/media/images/flags/cd.gif (renamed from askbot/skins/default/media/images/flags/cd.gif)bin243 -> 243 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cf.gif (renamed from askbot/skins/default/media/images/flags/cf.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cg.gif (renamed from askbot/skins/default/media/images/flags/cg.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ch.gif (renamed from askbot/skins/default/media/images/flags/ch.gif)bin332 -> 332 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ci.gif (renamed from askbot/skins/default/media/images/flags/ci.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ck.gif (renamed from askbot/skins/default/media/images/flags/ck.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cl.gif (renamed from askbot/skins/default/media/images/flags/cl.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cm.gif (renamed from askbot/skins/default/media/images/flags/cm.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cn.gif (renamed from askbot/skins/default/media/images/flags/cn.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/co.gif (renamed from askbot/skins/default/media/images/flags/co.gif)bin353 -> 353 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cr.gif (renamed from askbot/skins/default/media/images/flags/cr.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cs.gif (renamed from askbot/skins/default/media/images/flags/cs.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cu.gif (renamed from askbot/skins/default/media/images/flags/cu.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cv.gif (renamed from askbot/skins/default/media/images/flags/cv.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cx.gif (renamed from askbot/skins/default/media/images/flags/cx.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cy.gif (renamed from askbot/skins/default/media/images/flags/cy.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/cz.gif (renamed from askbot/skins/default/media/images/flags/cz.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/de.gif (renamed from askbot/skins/default/media/images/flags/de.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/dj.gif (renamed from askbot/skins/default/media/images/flags/dj.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/dk.gif (renamed from askbot/skins/default/media/images/flags/dk.gif)bin374 -> 374 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/dm.gif (renamed from askbot/skins/default/media/images/flags/dm.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/do.gif (renamed from askbot/skins/default/media/images/flags/do.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/dz.gif (renamed from askbot/skins/default/media/images/flags/dz.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ec.gif (renamed from askbot/skins/default/media/images/flags/ec.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ee.gif (renamed from askbot/skins/default/media/images/flags/ee.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/eg.gif (renamed from askbot/skins/default/media/images/flags/eg.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/eh.gif (renamed from askbot/skins/default/media/images/flags/eh.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/england.gif (renamed from askbot/skins/default/media/images/flags/england.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/er.gif (renamed from askbot/skins/default/media/images/flags/er.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/es.gif (renamed from askbot/skins/default/media/images/flags/es.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/et.gif (renamed from askbot/skins/default/media/images/flags/et.gif)bin364 -> 364 bytes
-rw-r--r--askbot/skins/common/media/images/flags/europeanunion.gif (renamed from askbot/skins/default/media/images/flags/europeanunion.gif)bin171 -> 171 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fam.gif (renamed from askbot/skins/default/media/images/flags/fam.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fi.gif (renamed from askbot/skins/default/media/images/flags/fi.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fj.gif (renamed from askbot/skins/default/media/images/flags/fj.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fk.gif (renamed from askbot/skins/default/media/images/flags/fk.gif)bin372 -> 372 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fm.gif (renamed from askbot/skins/default/media/images/flags/fm.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fo.gif (renamed from askbot/skins/default/media/images/flags/fo.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/fr.gif (renamed from askbot/skins/default/media/images/flags/fr.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ga.gif (renamed from askbot/skins/default/media/images/flags/ga.gif)bin359 -> 359 bytes
-rw-r--r--askbot/skins/common/media/images/flags/gb.gif (renamed from askbot/skins/default/media/images/flags/gb.gif)bin260 -> 260 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gd.gif (renamed from askbot/skins/default/media/images/flags/gd.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ge.gif (renamed from askbot/skins/default/media/images/flags/ge.gif)bin379 -> 379 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gf.gif (renamed from askbot/skins/default/media/images/flags/gf.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gh.gif (renamed from askbot/skins/default/media/images/flags/gh.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gi.gif (renamed from askbot/skins/default/media/images/flags/gi.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gl.gif (renamed from askbot/skins/default/media/images/flags/gl.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gm.gif (renamed from askbot/skins/default/media/images/flags/gm.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gn.gif (renamed from askbot/skins/default/media/images/flags/gn.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gp.gif (renamed from askbot/skins/default/media/images/flags/gp.gif)bin357 -> 357 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gq.gif (renamed from askbot/skins/default/media/images/flags/gq.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gr.gif (renamed from askbot/skins/default/media/images/flags/gr.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gs.gif (renamed from askbot/skins/default/media/images/flags/gs.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gt.gif (renamed from askbot/skins/default/media/images/flags/gt.gif)bin374 -> 374 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gu.gif (renamed from askbot/skins/default/media/images/flags/gu.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gw.gif (renamed from askbot/skins/default/media/images/flags/gw.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/gy.gif (renamed from askbot/skins/default/media/images/flags/gy.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/hk.gif (renamed from askbot/skins/default/media/images/flags/hk.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/hm.gif (renamed from askbot/skins/default/media/images/flags/hm.gif)bin378 -> 378 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/hn.gif (renamed from askbot/skins/default/media/images/flags/hn.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/hr.gif (renamed from askbot/skins/default/media/images/flags/hr.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ht.gif (renamed from askbot/skins/default/media/images/flags/ht.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/hu.gif (renamed from askbot/skins/default/media/images/flags/hu.gif)bin357 -> 357 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/id.gif (renamed from askbot/skins/default/media/images/flags/id.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ie.gif (renamed from askbot/skins/default/media/images/flags/ie.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/il.gif (renamed from askbot/skins/default/media/images/flags/il.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/in.gif (renamed from askbot/skins/default/media/images/flags/in.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/io.gif (renamed from askbot/skins/default/media/images/flags/io.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/iq.gif (renamed from askbot/skins/default/media/images/flags/iq.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ir.gif (renamed from askbot/skins/default/media/images/flags/ir.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/is.gif (renamed from askbot/skins/default/media/images/flags/is.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/it.gif (renamed from askbot/skins/default/media/images/flags/it.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/jm.gif (renamed from askbot/skins/default/media/images/flags/jm.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/jo.gif (renamed from askbot/skins/default/media/images/flags/jo.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/jp.gif (renamed from askbot/skins/default/media/images/flags/jp.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ke.gif (renamed from askbot/skins/default/media/images/flags/ke.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kg.gif (renamed from askbot/skins/default/media/images/flags/kg.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kh.gif (renamed from askbot/skins/default/media/images/flags/kh.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ki.gif (renamed from askbot/skins/default/media/images/flags/ki.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/km.gif (renamed from askbot/skins/default/media/images/flags/km.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kn.gif (renamed from askbot/skins/default/media/images/flags/kn.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kp.gif (renamed from askbot/skins/default/media/images/flags/kp.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kr.gif (renamed from askbot/skins/default/media/images/flags/kr.gif)bin385 -> 385 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kw.gif (renamed from askbot/skins/default/media/images/flags/kw.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ky.gif (renamed from askbot/skins/default/media/images/flags/ky.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/kz.gif (renamed from askbot/skins/default/media/images/flags/kz.gif)bin374 -> 374 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/la.gif (renamed from askbot/skins/default/media/images/flags/la.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/lb.gif (renamed from askbot/skins/default/media/images/flags/lb.gif)bin366 -> 366 bytes
-rw-r--r--askbot/skins/common/media/images/flags/lc.gif (renamed from askbot/skins/default/media/images/flags/lc.gif)bin259 -> 259 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/li.gif (renamed from askbot/skins/default/media/images/flags/li.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/lk.gif (renamed from askbot/skins/default/media/images/flags/lk.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/lr.gif (renamed from askbot/skins/default/media/images/flags/lr.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ls.gif (renamed from askbot/skins/default/media/images/flags/ls.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/lt.gif (renamed from askbot/skins/default/media/images/flags/lt.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/lu.gif (renamed from askbot/skins/default/media/images/flags/lu.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/lv.gif (renamed from askbot/skins/default/media/images/flags/lv.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ly.gif (renamed from askbot/skins/default/media/images/flags/ly.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ma.gif (renamed from askbot/skins/default/media/images/flags/ma.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mc.gif (renamed from askbot/skins/default/media/images/flags/mc.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/md.gif (renamed from askbot/skins/default/media/images/flags/md.gif)bin367 -> 367 bytes
-rw-r--r--askbot/skins/common/media/images/flags/me.gif (renamed from askbot/skins/default/media/images/flags/me.gif)bin238 -> 238 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mg.gif (renamed from askbot/skins/default/media/images/flags/mg.gif)bin372 -> 372 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mh.gif (renamed from askbot/skins/default/media/images/flags/mh.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mk.gif (renamed from askbot/skins/default/media/images/flags/mk.gif)bin382 -> 382 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ml.gif (renamed from askbot/skins/default/media/images/flags/ml.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mm.gif (renamed from askbot/skins/default/media/images/flags/mm.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mn.gif (renamed from askbot/skins/default/media/images/flags/mn.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mo.gif (renamed from askbot/skins/default/media/images/flags/mo.gif)bin378 -> 378 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mp.gif (renamed from askbot/skins/default/media/images/flags/mp.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mq.gif (renamed from askbot/skins/default/media/images/flags/mq.gif)bin379 -> 379 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mr.gif (renamed from askbot/skins/default/media/images/flags/mr.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ms.gif (renamed from askbot/skins/default/media/images/flags/ms.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mt.gif (renamed from askbot/skins/default/media/images/flags/mt.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mu.gif (renamed from askbot/skins/default/media/images/flags/mu.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mv.gif (renamed from askbot/skins/default/media/images/flags/mv.gif)bin372 -> 372 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mw.gif (renamed from askbot/skins/default/media/images/flags/mw.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mx.gif (renamed from askbot/skins/default/media/images/flags/mx.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/my.gif (renamed from askbot/skins/default/media/images/flags/my.gif)bin375 -> 375 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/mz.gif (renamed from askbot/skins/default/media/images/flags/mz.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/na.gif (renamed from askbot/skins/default/media/images/flags/na.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/nc.gif (renamed from askbot/skins/default/media/images/flags/nc.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ne.gif (renamed from askbot/skins/default/media/images/flags/ne.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/nf.gif (renamed from askbot/skins/default/media/images/flags/nf.gif)bin375 -> 375 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ng.gif (renamed from askbot/skins/default/media/images/flags/ng.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ni.gif (renamed from askbot/skins/default/media/images/flags/ni.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/nl.gif (renamed from askbot/skins/default/media/images/flags/nl.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/no.gif (renamed from askbot/skins/default/media/images/flags/no.gif)bin376 -> 376 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/np.gif (renamed from askbot/skins/default/media/images/flags/np.gif)bin302 -> 302 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/nr.gif (renamed from askbot/skins/default/media/images/flags/nr.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/nu.gif (renamed from askbot/skins/default/media/images/flags/nu.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/nz.gif (renamed from askbot/skins/default/media/images/flags/nz.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/om.gif (renamed from askbot/skins/default/media/images/flags/om.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pa.gif (renamed from askbot/skins/default/media/images/flags/pa.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pe.gif (renamed from askbot/skins/default/media/images/flags/pe.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pf.gif (renamed from askbot/skins/default/media/images/flags/pf.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pg.gif (renamed from askbot/skins/default/media/images/flags/pg.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ph.gif (renamed from askbot/skins/default/media/images/flags/ph.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pk.gif (renamed from askbot/skins/default/media/images/flags/pk.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pl.gif (renamed from askbot/skins/default/media/images/flags/pl.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pm.gif (renamed from askbot/skins/default/media/images/flags/pm.gif)bin374 -> 374 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pn.gif (renamed from askbot/skins/default/media/images/flags/pn.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pr.gif (renamed from askbot/skins/default/media/images/flags/pr.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ps.gif (renamed from askbot/skins/default/media/images/flags/ps.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pt.gif (renamed from askbot/skins/default/media/images/flags/pt.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/pw.gif (renamed from askbot/skins/default/media/images/flags/pw.gif)bin374 -> 374 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/py.gif (renamed from askbot/skins/default/media/images/flags/py.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/qa.gif (renamed from askbot/skins/default/media/images/flags/qa.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/re.gif (renamed from askbot/skins/default/media/images/flags/re.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ro.gif (renamed from askbot/skins/default/media/images/flags/ro.gif)bin363 -> 363 bytes
-rw-r--r--askbot/skins/common/media/images/flags/rs.gif (renamed from askbot/skins/default/media/images/flags/rs.gif)bin238 -> 238 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ru.gif (renamed from askbot/skins/default/media/images/flags/ru.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/rw.gif (renamed from askbot/skins/default/media/images/flags/rw.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sa.gif (renamed from askbot/skins/default/media/images/flags/sa.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sb.gif (renamed from askbot/skins/default/media/images/flags/sb.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sc.gif (renamed from askbot/skins/default/media/images/flags/sc.gif)bin357 -> 357 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/scotland.gif (renamed from askbot/skins/default/media/images/flags/scotland.gif)bin378 -> 378 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sd.gif (renamed from askbot/skins/default/media/images/flags/sd.gif)bin355 -> 355 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/se.gif (renamed from askbot/skins/default/media/images/flags/se.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sg.gif (renamed from askbot/skins/default/media/images/flags/sg.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sh.gif (renamed from askbot/skins/default/media/images/flags/sh.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/si.gif (renamed from askbot/skins/default/media/images/flags/si.gif)bin362 -> 362 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sj.gif (renamed from askbot/skins/default/media/images/flags/sj.gif)bin376 -> 376 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sk.gif (renamed from askbot/skins/default/media/images/flags/sk.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sl.gif (renamed from askbot/skins/default/media/images/flags/sl.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sm.gif (renamed from askbot/skins/default/media/images/flags/sm.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sn.gif (renamed from askbot/skins/default/media/images/flags/sn.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/so.gif (renamed from askbot/skins/default/media/images/flags/so.gif)bin376 -> 376 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sr.gif (renamed from askbot/skins/default/media/images/flags/sr.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/st.gif (renamed from askbot/skins/default/media/images/flags/st.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sv.gif (renamed from askbot/skins/default/media/images/flags/sv.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sy.gif (renamed from askbot/skins/default/media/images/flags/sy.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/sz.gif (renamed from askbot/skins/default/media/images/flags/sz.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tc.gif (renamed from askbot/skins/default/media/images/flags/tc.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/td.gif (renamed from askbot/skins/default/media/images/flags/td.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tf.gif (renamed from askbot/skins/default/media/images/flags/tf.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tg.gif (renamed from askbot/skins/default/media/images/flags/tg.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/th.gif (renamed from askbot/skins/default/media/images/flags/th.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tj.gif (renamed from askbot/skins/default/media/images/flags/tj.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tk.gif (renamed from askbot/skins/default/media/images/flags/tk.gif)bin372 -> 372 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tl.gif (renamed from askbot/skins/default/media/images/flags/tl.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tm.gif (renamed from askbot/skins/default/media/images/flags/tm.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tn.gif (renamed from askbot/skins/default/media/images/flags/tn.gif)bin375 -> 375 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/to.gif (renamed from askbot/skins/default/media/images/flags/to.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tr.gif (renamed from askbot/skins/default/media/images/flags/tr.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tt.gif (renamed from askbot/skins/default/media/images/flags/tt.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tv.gif (renamed from askbot/skins/default/media/images/flags/tv.gif)bin361 -> 361 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tw.gif (renamed from askbot/skins/default/media/images/flags/tw.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/tz.gif (renamed from askbot/skins/default/media/images/flags/tz.gif)bin366 -> 366 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ua.gif (renamed from askbot/skins/default/media/images/flags/ua.gif)bin360 -> 360 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ug.gif (renamed from askbot/skins/default/media/images/flags/ug.gif)bin359 -> 359 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/um.gif (renamed from askbot/skins/default/media/images/flags/um.gif)bin371 -> 371 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/us.gif (renamed from askbot/skins/default/media/images/flags/us.gif)bin367 -> 367 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/uy.gif (renamed from askbot/skins/default/media/images/flags/uy.gif)bin373 -> 373 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/uz.gif (renamed from askbot/skins/default/media/images/flags/uz.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/va.gif (renamed from askbot/skins/default/media/images/flags/va.gif)bin369 -> 369 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/vc.gif (renamed from askbot/skins/default/media/images/flags/vc.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ve.gif (renamed from askbot/skins/default/media/images/flags/ve.gif)bin364 -> 364 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/vg.gif (renamed from askbot/skins/default/media/images/flags/vg.gif)bin368 -> 368 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/vi.gif (renamed from askbot/skins/default/media/images/flags/vi.gif)bin376 -> 376 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/vn.gif (renamed from askbot/skins/default/media/images/flags/vn.gif)bin370 -> 370 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/vu.gif (renamed from askbot/skins/default/media/images/flags/vu.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/wales.gif (renamed from askbot/skins/default/media/images/flags/wales.gif)bin372 -> 372 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/wf.gif (renamed from askbot/skins/default/media/images/flags/wf.gif)bin377 -> 377 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ws.gif (renamed from askbot/skins/default/media/images/flags/ws.gif)bin365 -> 365 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/ye.gif (renamed from askbot/skins/default/media/images/flags/ye.gif)bin356 -> 356 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/yt.gif (renamed from askbot/skins/default/media/images/flags/yt.gif)bin382 -> 382 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/za.gif (renamed from askbot/skins/default/media/images/flags/za.gif)bin363 -> 363 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/zm.gif (renamed from askbot/skins/default/media/images/flags/zm.gif)bin358 -> 358 bytes
-rwxr-xr-xaskbot/skins/common/media/images/flags/zw.gif (renamed from askbot/skins/default/media/images/flags/zw.gif)bin365 -> 365 bytes
-rw-r--r--askbot/skins/common/media/images/go-up-grey.pngbin0 -> 563 bytes
-rw-r--r--askbot/skins/common/media/images/go-up-orange.pngbin0 -> 586 bytes
-rwxr-xr-xaskbot/skins/common/media/images/gray-up-arrow-h18px.pngbin0 -> 383 bytes
-rwxr-xr-xaskbot/skins/common/media/images/grippie.pngbin0 -> 162 bytes
-rwxr-xr-xaskbot/skins/common/media/images/indicator.gifbin0 -> 2545 bytes
-rw-r--r--askbot/skins/common/media/images/logo.gifbin0 -> 3792 bytes
-rw-r--r--askbot/skins/common/media/images/logo.pngbin0 -> 5841 bytes
-rwxr-xr-xaskbot/skins/common/media/images/logo1.pngbin0 -> 2752 bytes
-rwxr-xr-xaskbot/skins/common/media/images/logo2.pngbin0 -> 2124 bytes
-rw-r--r--askbot/skins/common/media/images/mail-envelope-empty.pngbin0 -> 547 bytes
-rw-r--r--askbot/skins/common/media/images/mail-envelope-full.pngbin0 -> 482 bytes
-rwxr-xr-xaskbot/skins/common/media/images/medala.gifbin0 -> 801 bytes
-rwxr-xr-xaskbot/skins/common/media/images/medala_on.gifbin0 -> 957 bytes
-rwxr-xr-xaskbot/skins/common/media/images/new.gifbin0 -> 635 bytes
-rwxr-xr-xaskbot/skins/common/media/images/nophoto.pngbin0 -> 696 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid.gifbin0 -> 910 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/aol.gif (renamed from askbot/skins/default/media/images/openid/aol.gif)bin2205 -> 2205 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/blogger.ico (renamed from askbot/skins/default/media/images/openid/blogger.ico)bin3638 -> 3638 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/claimid.ico (renamed from askbot/skins/default/media/images/openid/claimid.ico)bin3638 -> 3638 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/facebook.gif (renamed from askbot/skins/default/media/images/openid/facebook.gif)bin2075 -> 2075 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/flickr.ico (renamed from askbot/skins/default/media/images/openid/flickr.ico)bin1150 -> 1150 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/google.gif (renamed from askbot/skins/default/media/images/openid/google.gif)bin1596 -> 1596 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/livejournal.ico (renamed from askbot/skins/default/media/images/openid/livejournal.ico)bin5222 -> 5222 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/myopenid.ico (renamed from askbot/skins/default/media/images/openid/myopenid.ico)bin2862 -> 2862 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/openid-inputicon.gif (renamed from askbot/skins/default/media/images/openid/openid-inputicon.gif)bin237 -> 237 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/openid.gif (renamed from askbot/skins/default/media/images/openid/openid.gif)bin740 -> 740 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/technorati.ico (renamed from askbot/skins/default/media/images/openid/technorati.ico)bin2294 -> 2294 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/twitter.png (renamed from askbot/skins/default/media/images/openid/twitter.png)bin3130 -> 3130 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/verisign.ico (renamed from askbot/skins/default/media/images/openid/verisign.ico)bin4710 -> 4710 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/vidoop.ico (renamed from askbot/skins/default/media/images/openid/vidoop.ico)bin1406 -> 1406 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/wordpress.ico (renamed from askbot/skins/default/media/images/openid/wordpress.ico)bin1150 -> 1150 bytes
-rwxr-xr-xaskbot/skins/common/media/images/openid/yahoo.gif (renamed from askbot/skins/default/media/images/openid/yahoo.gif)bin1510 -> 1510 bytes
-rw-r--r--askbot/skins/common/media/images/print.pngbin0 -> 1391 bytes
-rw-r--r--askbot/skins/common/media/images/pw-login.gifbin0 -> 1818 bytes
-rwxr-xr-xaskbot/skins/common/media/images/quest-bg.gifbin0 -> 294 bytes
-rw-r--r--askbot/skins/common/media/images/scopearrow.pngbin0 -> 538 bytes
-rw-r--r--askbot/skins/common/media/images/sprite.pngbin0 -> 5325 bytes
-rw-r--r--askbot/skins/common/media/images/sprites.pngbin0 -> 13173 bytes
-rw-r--r--askbot/skins/common/media/images/sprites_source/sprites.svg732
-rw-r--r--askbot/skins/common/media/images/summary-background.pngbin0 -> 291 bytes
-rw-r--r--askbot/skins/common/media/images/tag-left.pngbin0 -> 290 bytes
-rw-r--r--askbot/skins/common/media/images/tag-right.pngbin0 -> 187 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-accepted-on.pngbin0 -> 1124 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-accepted.pngbin0 -> 1058 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-arrow-down-on.pngbin0 -> 905 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-arrow-down.pngbin0 -> 876 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-arrow-up-on.pngbin0 -> 906 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-arrow-up.pngbin0 -> 843 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-favorite-off.pngbin0 -> 930 bytes
-rwxr-xr-xaskbot/skins/common/media/images/vote-favorite-on.pngbin0 -> 1023 bytes
-rw-r--r--askbot/skins/common/media/images/wiki.pngbin0 -> 5178 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/aol.gif (renamed from askbot/skins/default/media/jquery-openid/images/aol.gif)bin1872 -> 1872 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/blogger-1.png (renamed from askbot/skins/default/media/jquery-openid/images/blogger-1.png)bin432 -> 432 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/blogger.ico (renamed from askbot/skins/default/media/jquery-openid/images/blogger.ico)bin3638 -> 3638 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/claimid-0.png (renamed from askbot/skins/default/media/jquery-openid/images/claimid-0.png)bin629 -> 629 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/claimid.ico (renamed from askbot/skins/default/media/jquery-openid/images/claimid.ico)bin3638 -> 3638 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/facebook.gif (renamed from askbot/skins/default/media/jquery-openid/images/facebook.gif)bin1737 -> 1737 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/flickr.ico (renamed from askbot/skins/default/media/jquery-openid/images/flickr.ico)bin1150 -> 1150 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/flickr.png (renamed from askbot/skins/default/media/jquery-openid/images/flickr.png)bin426 -> 426 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/google.gif (renamed from askbot/skins/default/media/jquery-openid/images/google.gif)bin1528 -> 1528 bytes
-rw-r--r--askbot/skins/common/media/jquery-openid/images/identica.png (renamed from askbot/skins/default/media/jquery-openid/images/identica.png)bin6601 -> 6601 bytes
-rw-r--r--askbot/skins/common/media/jquery-openid/images/linkedin.gif (renamed from askbot/skins/default/media/jquery-openid/images/linkedin.gif)bin1530 -> 1530 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/livejournal-1.png (renamed from askbot/skins/default/media/jquery-openid/images/livejournal-1.png)bin713 -> 713 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/livejournal.ico (renamed from askbot/skins/default/media/jquery-openid/images/livejournal.ico)bin5222 -> 5222 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/myopenid-2.png (renamed from askbot/skins/default/media/jquery-openid/images/myopenid-2.png)bin511 -> 511 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/myopenid.ico (renamed from askbot/skins/default/media/jquery-openid/images/myopenid.ico)bin2862 -> 2862 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/openid-inputicon.gif (renamed from askbot/skins/default/media/jquery-openid/images/openid-inputicon.gif)bin237 -> 237 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/openid.gif (renamed from askbot/skins/default/media/jquery-openid/images/openid.gif)bin1473 -> 1473 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/openidico.png (renamed from askbot/skins/default/media/jquery-openid/images/openidico.png)bin654 -> 654 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/openidico16.png (renamed from askbot/skins/default/media/jquery-openid/images/openidico16.png)bin554 -> 554 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/technorati-1.png (renamed from askbot/skins/default/media/jquery-openid/images/technorati-1.png)bin606 -> 606 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/technorati.ico (renamed from askbot/skins/default/media/jquery-openid/images/technorati.ico)bin2294 -> 2294 bytes
-rw-r--r--askbot/skins/common/media/jquery-openid/images/twitter.gif (renamed from askbot/skins/default/media/jquery-openid/images/twitter.gif)bin1913 -> 1913 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/verisign-2.png (renamed from askbot/skins/default/media/jquery-openid/images/verisign-2.png)bin859 -> 859 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/verisign.ico (renamed from askbot/skins/default/media/jquery-openid/images/verisign.ico)bin4710 -> 4710 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/vidoop.ico (renamed from askbot/skins/default/media/jquery-openid/images/vidoop.ico)bin1406 -> 1406 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/vidoop.png (renamed from askbot/skins/default/media/jquery-openid/images/vidoop.png)bin499 -> 499 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/wordpress.ico (renamed from askbot/skins/default/media/jquery-openid/images/wordpress.ico)bin1150 -> 1150 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/wordpress.png (renamed from askbot/skins/default/media/jquery-openid/images/wordpress.png)bin566 -> 566 bytes
-rwxr-xr-xaskbot/skins/common/media/jquery-openid/images/yahoo.gif (renamed from askbot/skins/default/media/jquery-openid/images/yahoo.gif)bin1607 -> 1607 bytes
-rw-r--r--askbot/skins/common/media/jquery-openid/jquery.openid.js436
-rw-r--r--askbot/skins/common/media/jquery-openid/openid.css38
-rw-r--r--askbot/skins/common/media/js/autocompleter.js (renamed from askbot/skins/default/media/js/autocompleter.js)0
-rw-r--r--askbot/skins/common/media/js/compress.bat (renamed from askbot/skins/default/media/js/compress.bat)0
-rw-r--r--askbot/skins/common/media/js/editor.js (renamed from askbot/skins/default/media/js/editor.js)0
-rw-r--r--askbot/skins/common/media/js/excanvas.min.js (renamed from askbot/skins/default/media/js/excanvas.min.js)0
-rw-r--r--askbot/skins/common/media/js/flot-build.bat (renamed from askbot/skins/default/media/js/flot-build.bat)0
-rw-r--r--askbot/skins/common/media/js/i18n.js (renamed from askbot/skins/default/media/js/i18n.js)0
-rw-r--r--askbot/skins/common/media/js/jquery-1.4.3.js (renamed from askbot/skins/default/media/js/jquery-1.4.3.js)0
-rw-r--r--askbot/skins/common/media/js/jquery-fieldselection.js (renamed from askbot/skins/default/media/js/jquery-fieldselection.js)0
-rw-r--r--askbot/skins/common/media/js/jquery-fieldselection.min.js (renamed from askbot/skins/default/media/js/jquery-fieldselection.min.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.ajaxfileupload.js (renamed from askbot/skins/default/media/js/jquery.ajaxfileupload.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.animate-colors.js (renamed from askbot/skins/default/media/js/jquery.animate-colors.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.flot.js (renamed from askbot/skins/default/media/js/jquery.flot.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.flot.min.js (renamed from askbot/skins/default/media/js/jquery.flot.min.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.form.js (renamed from askbot/skins/default/media/js/jquery.form.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.i18n.js (renamed from askbot/skins/default/media/js/jquery.i18n.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.openid.js (renamed from askbot/skins/default/media/js/jquery.openid.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.validate.js (renamed from askbot/skins/default/media/js/jquery.validate.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.validate.min.js (renamed from askbot/skins/default/media/js/jquery.validate.min.js)0
-rw-r--r--askbot/skins/common/media/js/jquery.validate.pack.js (renamed from askbot/skins/default/media/js/jquery.validate.pack.js)0
-rw-r--r--askbot/skins/common/media/js/less.min.js16
-rw-r--r--askbot/skins/common/media/js/live_search.js523
-rw-r--r--askbot/skins/common/media/js/output-words.html (renamed from askbot/skins/default/media/js/output-words.html)0
-rw-r--r--askbot/skins/common/media/js/output-words.js (renamed from askbot/skins/default/media/js/output-words.js)0
-rw-r--r--askbot/skins/common/media/js/post.js1672
-rw-r--r--askbot/skins/common/media/js/se_hilite.js (renamed from askbot/skins/default/media/js/se_hilite.js)0
-rw-r--r--askbot/skins/common/media/js/se_hilite_src.js (renamed from askbot/skins/default/media/js/se_hilite_src.js)0
-rw-r--r--askbot/skins/common/media/js/tag_selector.js (renamed from askbot/skins/default/media/js/tag_selector.js)0
-rw-r--r--askbot/skins/common/media/js/user.js181
-rw-r--r--askbot/skins/common/media/js/utils.js400
-rw-r--r--askbot/skins/common/media/js/wmd/images/editor-toolbar-background.pngbin0 -> 282 bytes
-rwxr-xr-xaskbot/skins/common/media/js/wmd/images/wmd-buttons.png (renamed from askbot/skins/default/media/js/wmd/images/wmd-buttons.png)bin11480 -> 11480 bytes
-rw-r--r--askbot/skins/common/media/js/wmd/showdown-min.js (renamed from askbot/skins/default/media/js/wmd/showdown-min.js)0
-rw-r--r--askbot/skins/common/media/js/wmd/showdown.js (renamed from askbot/skins/default/media/js/wmd/showdown.js)0
-rw-r--r--askbot/skins/common/media/js/wmd/wmd-min.js (renamed from askbot/skins/default/media/js/wmd/wmd-min.js)0
-rw-r--r--askbot/skins/common/media/js/wmd/wmd-test.html (renamed from askbot/skins/default/media/js/wmd/wmd-test.html)0
-rw-r--r--askbot/skins/common/media/js/wmd/wmd.css136
-rw-r--r--askbot/skins/common/media/js/wmd/wmd.js2438
-rw-r--r--askbot/skins/common/media/style/auth.css48
-rw-r--r--askbot/skins/common/media/style/jquery.autocomplete.css37
-rw-r--r--askbot/skins/common/media/style/lib_style.less38
-rw-r--r--askbot/skins/common/media/style/openid.css45
-rw-r--r--askbot/skins/common/media/style/prettify.css27
-rw-r--r--askbot/skins/common/media/style/style.css2616
-rw-r--r--askbot/skins/common/templates/authopenid/authopenid_macros.html (renamed from askbot/skins/default/templates/authopenid/macros.html)0
-rw-r--r--askbot/skins/common/templates/authopenid/changeemail.html (renamed from askbot/skins/default/templates/authopenid/changeemail.html)0
-rw-r--r--askbot/skins/common/templates/authopenid/complete.html (renamed from askbot/skins/default/templates/authopenid/complete.html)0
-rw-r--r--askbot/skins/common/templates/authopenid/confirm_email.txt (renamed from askbot/skins/default/templates/authopenid/confirm_email.txt)0
-rw-r--r--askbot/skins/common/templates/authopenid/email_validation.txt (renamed from askbot/skins/default/templates/authopenid/email_validation.txt)0
-rw-r--r--askbot/skins/common/templates/authopenid/logout.html31
-rw-r--r--askbot/skins/common/templates/authopenid/providers_javascript.html (renamed from askbot/skins/default/templates/authopenid/providers_javascript.html)0
-rw-r--r--askbot/skins/common/templates/authopenid/signin.html241
-rw-r--r--askbot/skins/common/templates/authopenid/signup_with_password.html58
-rw-r--r--askbot/skins/common/templates/avatar/add.html (renamed from askbot/skins/default/templates/avatar/add.html)0
-rw-r--r--askbot/skins/common/templates/avatar/change.html (renamed from askbot/skins/default/templates/avatar/change.html)0
-rw-r--r--askbot/skins/common/templates/avatar/confirm_delete.html15
-rw-r--r--askbot/skins/common/templates/one_column_body.html8
-rw-r--r--askbot/skins/common/templates/question/answer_author_info.html6
-rw-r--r--askbot/skins/common/templates/question/answer_comments.html10
-rw-r--r--askbot/skins/common/templates/question/answer_controls.html33
-rw-r--r--askbot/skins/common/templates/question/answer_vote_buttons.html27
-rw-r--r--askbot/skins/common/templates/question/closed_question_info.html5
-rw-r--r--askbot/skins/common/templates/question/question_author_info.html6
-rw-r--r--askbot/skins/common/templates/question/question_comments.html10
-rw-r--r--askbot/skins/common/templates/question/question_controls.html31
-rw-r--r--askbot/skins/common/templates/question/question_tags.html7
-rw-r--r--askbot/skins/common/templates/question/question_vote_buttons.html4
-rw-r--r--askbot/skins/common/templates/question/share_buttons.html5
-rw-r--r--askbot/skins/common/templates/two_column_body.html12
-rw-r--r--askbot/skins/common/templates/widgets/edit_post.html61
-rw-r--r--askbot/skins/common/templates/widgets/related_tags.html22
-rw-r--r--askbot/skins/common/templates/widgets/search_bar.html50
-rw-r--r--askbot/skins/common/templates/widgets/tag_selector.html46
-rw-r--r--askbot/skins/default/media/images/accept.pngbin0 -> 727 bytes
-rw-r--r--askbot/skins/default/media/images/answers-background.pngbin0 -> 235 bytes
-rw-r--r--askbot/skins/default/media/images/background-user-info.pngbin0 -> 361 bytes
-rw-r--r--askbot/skins/default/media/images/bigbutton.pngbin0 -> 263 bytes
-rw-r--r--askbot/skins/default/media/images/bigbuttonhover.pngbin0 -> 236 bytes
-rw-r--r--[-rwxr-xr-x]askbot/skins/default/media/images/close-small-dark.pngbin226 -> 879 bytes
-rw-r--r--askbot/skins/default/media/images/close.pngbin0 -> 469 bytes
-rw-r--r--askbot/skins/default/media/images/comment-background.pngbin0 -> 250 bytes
-rw-r--r--askbot/skins/default/media/images/comment.pngbin0 -> 606 bytes
-rw-r--r--askbot/skins/default/media/images/contributorsback.pngbin0 -> 714 bytes
-rw-r--r--askbot/skins/default/media/images/delete.pngbin0 -> 434 bytes
-rw-r--r--askbot/skins/default/media/images/edit2.pngbin0 -> 498 bytes
-rw-r--r--[-rwxr-xr-x]askbot/skins/default/media/images/feed-icon-small.pngbin689 -> 669 bytes
-rw-r--r--askbot/skins/default/media/images/flag.pngbin0 -> 515 bytes
-rw-r--r--askbot/skins/default/media/images/link.pngbin0 -> 601 bytes
-rw-r--r--askbot/skins/default/media/images/logo.gifbin2272 -> 2249 bytes
-rw-r--r--askbot/skins/default/media/images/medium-button.pngbin0 -> 217 bytes
-rw-r--r--askbot/skins/default/media/images/notification.pngbin0 -> 217 bytes
-rw-r--r--askbot/skins/default/media/images/retag.pngbin0 -> 474 bytes
-rw-r--r--askbot/skins/default/media/images/scopearrow.pngbin0 -> 538 bytes
-rw-r--r--askbot/skins/default/media/images/small-button-blue.pngbin0 -> 202 bytes
-rw-r--r--askbot/skins/default/media/images/small-button-cancel.pngbin0 -> 211 bytes
-rw-r--r--askbot/skins/default/media/images/socialsprite.pngbin0 -> 3030 bytes
-rw-r--r--askbot/skins/default/media/images/sprites.pngbin0 -> 13173 bytes
-rw-r--r--askbot/skins/default/media/images/sprites_source/sprites.svg732
-rw-r--r--askbot/skins/default/media/images/summary-background.pngbin0 -> 233 bytes
-rw-r--r--askbot/skins/default/media/images/tag-left.pngbin290 -> 488 bytes
-rw-r--r--askbot/skins/default/media/images/tag-right.pngbin187 -> 365 bytes
-rw-r--r--askbot/skins/default/media/images/tips.pngbin0 -> 716 bytes
-rw-r--r--askbot/skins/default/media/images/view-background.pngbin0 -> 265 bytes
-rw-r--r--askbot/skins/default/media/images/vote-arrow-down-new.pngbin0 -> 1458 bytes
-rw-r--r--askbot/skins/default/media/images/vote-arrow-down-on-new.pngbin0 -> 980 bytes
-rw-r--r--askbot/skins/default/media/images/vote-arrow-up-new.pngbin0 -> 979 bytes
-rw-r--r--askbot/skins/default/media/images/vote-arrow-up-on-new.pngbin0 -> 1029 bytes
-rw-r--r--askbot/skins/default/media/images/vote-background.pngbin0 -> 225 bytes
-rw-r--r--askbot/skins/default/media/js/live_search.js612
-rw-r--r--askbot/skins/default/media/js/post.js1665
-rw-r--r--askbot/skins/default/media/js/utils.js437
-rw-r--r--askbot/skins/default/media/style/jquery.autocomplete.css7
-rw-r--r--askbot/skins/default/media/style/lib_style.less55
-rw-r--r--askbot/skins/default/media/style/style.css4501
-rw-r--r--askbot/skins/default/media/style/style.less3263
-rw-r--r--askbot/skins/default/templates/about.html2
-rw-r--r--askbot/skins/default/templates/answer_edit.html15
-rw-r--r--askbot/skins/default/templates/ask.html10
-rw-r--r--askbot/skins/default/templates/badge.html16
-rw-r--r--askbot/skins/default/templates/badges.html4
-rw-r--r--askbot/skins/default/templates/base.html46
-rw-r--r--askbot/skins/default/templates/blocks/bottom_scripts.html96
-rw-r--r--askbot/skins/default/templates/faq.html1
-rw-r--r--askbot/skins/default/templates/feedback.html28
-rw-r--r--askbot/skins/default/templates/macros.html586
-rw-r--r--askbot/skins/default/templates/main_page/content.html16
-rw-r--r--askbot/skins/default/templates/main_page/headline.html38
-rw-r--r--askbot/skins/default/templates/main_page/javascript.html5
-rw-r--r--askbot/skins/default/templates/main_page/nothing_found.html2
-rw-r--r--askbot/skins/default/templates/main_page/paginator.html1
-rw-r--r--askbot/skins/default/templates/main_page/questions_loop.html16
-rw-r--r--askbot/skins/default/templates/main_page/sidebar.html36
-rw-r--r--askbot/skins/default/templates/main_page/tab_bar.html35
-rw-r--r--askbot/skins/default/templates/meta/bottom_scripts.html94
-rw-r--r--askbot/skins/default/templates/meta/editor_data.html (renamed from askbot/skins/default/templates/blocks/editor_data.html)0
-rw-r--r--askbot/skins/default/templates/meta/html_head_javascript.html10
-rw-r--r--askbot/skins/default/templates/meta/html_head_meta.html8
-rw-r--r--askbot/skins/default/templates/meta/html_head_stylesheets.html15
-rw-r--r--askbot/skins/default/templates/meta/mandatory_tags_js.html (renamed from askbot/skins/default/templates/blocks/mandatory_tags_js.html)0
-rw-r--r--askbot/skins/default/templates/privacy.html4
-rw-r--r--askbot/skins/default/templates/question.html576
-rw-r--r--askbot/skins/default/templates/question/answer_card.html25
-rw-r--r--askbot/skins/default/templates/question/answer_tab_bar.html24
-rw-r--r--askbot/skins/default/templates/question/content.html19
-rw-r--r--askbot/skins/default/templates/question/javascript.html100
-rw-r--r--askbot/skins/default/templates/question/new_answer_form.html57
-rw-r--r--askbot/skins/default/templates/question/question_card.html22
-rw-r--r--askbot/skins/default/templates/question/sharing_prompt_phrase.html11
-rw-r--r--askbot/skins/default/templates/question/sidebar.html75
-rw-r--r--askbot/skins/default/templates/question/subscribe_by_email_prompt.html23
-rw-r--r--askbot/skins/default/templates/question_edit.html13
-rw-r--r--askbot/skins/default/templates/revisions.html2
-rw-r--r--askbot/skins/default/templates/tags.html15
-rw-r--r--askbot/skins/default/templates/user_profile/user.html10
-rw-r--r--askbot/skins/default/templates/user_profile/user_favorites.html2
-rw-r--r--askbot/skins/default/templates/user_profile/user_reputation.html7
-rw-r--r--askbot/skins/default/templates/user_profile/user_stats.html2
-rw-r--r--askbot/skins/default/templates/user_profile/user_tabs.html3
-rw-r--r--askbot/skins/default/templates/user_profile/user_votes.html4
-rw-r--r--askbot/skins/default/templates/users.html6
-rw-r--r--askbot/skins/default/templates/widgets/answer_edit_tips.html67
-rw-r--r--askbot/skins/default/templates/widgets/ask_button.html3
-rw-r--r--askbot/skins/default/templates/widgets/ask_form.html47
-rw-r--r--askbot/skins/default/templates/widgets/contributors.html10
-rw-r--r--askbot/skins/default/templates/widgets/footer.html61
-rw-r--r--askbot/skins/default/templates/widgets/header.html17
-rw-r--r--askbot/skins/default/templates/widgets/logo.html6
-rw-r--r--askbot/skins/default/templates/widgets/meta_nav.html15
-rw-r--r--askbot/skins/default/templates/widgets/question_edit_tips.html63
-rw-r--r--askbot/skins/default/templates/widgets/question_summary.html58
-rw-r--r--askbot/skins/default/templates/widgets/scope_nav.html12
-rw-r--r--askbot/skins/default/templates/widgets/secondary_header.html12
-rw-r--r--askbot/skins/default/templates/widgets/system_messages.html8
-rw-r--r--askbot/skins/default/templates/widgets/user_list.html22
-rw-r--r--askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html21
-rw-r--r--askbot/skins/default/templates/widgets/user_navigation.html15
-rw-r--r--askbot/skins/default/templates/widgets/user_score_and_badge_summary.html19
-rw-r--r--askbot/skins/loaders.py4
-rw-r--r--askbot/skins/old/media/images/anon.pngbin0 -> 687 bytes
-rwxr-xr-xaskbot/skins/old/media/images/blue-up-arrow-h18px.pngbin0 -> 593 bytes
-rwxr-xr-xaskbot/skins/old/media/images/box-arrow.gifbin0 -> 69 bytes
-rwxr-xr-xaskbot/skins/old/media/images/bullet_green.gifbin0 -> 64 bytes
-rwxr-xr-xaskbot/skins/old/media/images/cc-88x31.pngbin0 -> 5460 bytes
-rw-r--r--askbot/skins/old/media/images/cc-by-sa.pngbin0 -> 5083 bytes
-rwxr-xr-xaskbot/skins/old/media/images/close-small-dark.pngbin0 -> 226 bytes
-rwxr-xr-xaskbot/skins/old/media/images/close-small-hover.pngbin0 -> 337 bytes
-rwxr-xr-xaskbot/skins/old/media/images/close-small.pngbin0 -> 293 bytes
-rwxr-xr-xaskbot/skins/old/media/images/dash.gifbin0 -> 44 bytes
-rw-r--r--askbot/skins/old/media/images/dialog-warning-off.pngbin0 -> 419 bytes
-rw-r--r--askbot/skins/old/media/images/dialog-warning.pngbin0 -> 603 bytes
-rwxr-xr-xaskbot/skins/old/media/images/djangomade124x25_grey.gifbin0 -> 2035 bytes
-rwxr-xr-xaskbot/skins/old/media/images/dot-g.gifbin0 -> 61 bytes
-rwxr-xr-xaskbot/skins/old/media/images/dot-list.gifbin0 -> 56 bytes
-rwxr-xr-xaskbot/skins/old/media/images/edit.pngbin0 -> 758 bytes
-rwxr-xr-xaskbot/skins/old/media/images/expander-arrow-hide.gifbin0 -> 126 bytes
-rwxr-xr-xaskbot/skins/old/media/images/expander-arrow-show.gifbin0 -> 135 bytes
-rw-r--r--askbot/skins/old/media/images/favicon.gifbin0 -> 898 bytes
-rw-r--r--askbot/skins/old/media/images/favicon.icobin0 -> 1150 bytes
-rwxr-xr-xaskbot/skins/old/media/images/feed-icon-small.pngbin0 -> 689 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ad.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ae.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/af.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ag.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ai.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/al.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/am.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/an.gifbin0 -> 368 bytes
-rw-r--r--askbot/skins/old/media/images/flags/ao.gifbin0 -> 244 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ar.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/as.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/at.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/au.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/aw.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ax.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/az.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ba.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bb.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bd.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/be.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bf.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bg.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bh.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bi.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bj.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bm.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bn.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bo.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/br.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bs.gifbin0 -> 351 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bt.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bv.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bw.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/by.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/bz.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ca.gifbin0 -> 376 bytes
-rw-r--r--askbot/skins/old/media/images/flags/catalonia.gifbin0 -> 238 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cc.gifbin0 -> 371 bytes
-rw-r--r--askbot/skins/old/media/images/flags/cd.gifbin0 -> 243 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cf.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cg.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ch.gifbin0 -> 332 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ci.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ck.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cl.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cm.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cn.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/co.gifbin0 -> 353 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cr.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cs.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cu.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cv.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cx.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cy.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/cz.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/de.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/dj.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/dk.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/dm.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/do.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/dz.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ec.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ee.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/eg.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/eh.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/england.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/er.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/es.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/et.gifbin0 -> 364 bytes
-rw-r--r--askbot/skins/old/media/images/flags/europeanunion.gifbin0 -> 171 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fam.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fi.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fj.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fk.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fm.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fo.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/fr.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ga.gifbin0 -> 359 bytes
-rw-r--r--askbot/skins/old/media/images/flags/gb.gifbin0 -> 260 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gd.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ge.gifbin0 -> 379 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gf.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gh.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gi.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gl.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gm.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gn.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gp.gifbin0 -> 357 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gq.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gr.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gs.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gt.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gu.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gw.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/gy.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/hk.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/hm.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/hn.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/hr.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ht.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/hu.gifbin0 -> 357 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/id.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ie.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/il.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/in.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/io.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/iq.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ir.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/is.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/it.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/jm.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/jo.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/jp.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ke.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kg.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kh.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ki.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/km.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kn.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kp.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kr.gifbin0 -> 385 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kw.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ky.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/kz.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/la.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/lb.gifbin0 -> 366 bytes
-rw-r--r--askbot/skins/old/media/images/flags/lc.gifbin0 -> 259 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/li.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/lk.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/lr.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ls.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/lt.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/lu.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/lv.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ly.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ma.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mc.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/md.gifbin0 -> 367 bytes
-rw-r--r--askbot/skins/old/media/images/flags/me.gifbin0 -> 238 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mg.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mh.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mk.gifbin0 -> 382 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ml.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mm.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mn.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mo.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mp.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mq.gifbin0 -> 379 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mr.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ms.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mt.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mu.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mv.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mw.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mx.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/my.gifbin0 -> 375 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/mz.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/na.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/nc.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ne.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/nf.gifbin0 -> 375 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ng.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ni.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/nl.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/no.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/np.gifbin0 -> 302 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/nr.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/nu.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/nz.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/om.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pa.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pe.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pf.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pg.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ph.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pk.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pl.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pm.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pn.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pr.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ps.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pt.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/pw.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/py.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/qa.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/re.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ro.gifbin0 -> 363 bytes
-rw-r--r--askbot/skins/old/media/images/flags/rs.gifbin0 -> 238 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ru.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/rw.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sa.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sb.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sc.gifbin0 -> 357 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/scotland.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sd.gifbin0 -> 355 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/se.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sg.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sh.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/si.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sj.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sk.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sl.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sm.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sn.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/so.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sr.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/st.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sv.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sy.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/sz.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tc.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/td.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tf.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tg.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/th.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tj.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tk.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tl.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tm.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tn.gifbin0 -> 375 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/to.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tr.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tt.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tv.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tw.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/tz.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ua.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ug.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/um.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/us.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/uy.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/uz.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/va.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/vc.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ve.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/vg.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/vi.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/vn.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/vu.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/wales.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/wf.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ws.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/ye.gifbin0 -> 356 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/yt.gifbin0 -> 382 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/za.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/zm.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/old/media/images/flags/zw.gifbin0 -> 365 bytes
-rw-r--r--askbot/skins/old/media/images/go-up-grey.pngbin0 -> 563 bytes
-rw-r--r--askbot/skins/old/media/images/go-up-orange.pngbin0 -> 586 bytes
-rwxr-xr-xaskbot/skins/old/media/images/gray-up-arrow-h18px.pngbin0 -> 383 bytes
-rwxr-xr-xaskbot/skins/old/media/images/grippie.pngbin0 -> 162 bytes
-rwxr-xr-xaskbot/skins/old/media/images/indicator.gifbin0 -> 2545 bytes
-rw-r--r--askbot/skins/old/media/images/logo.gifbin0 -> 2272 bytes
-rw-r--r--askbot/skins/old/media/images/logo.pngbin0 -> 5841 bytes
-rwxr-xr-xaskbot/skins/old/media/images/logo1.pngbin0 -> 2752 bytes
-rwxr-xr-xaskbot/skins/old/media/images/logo2.pngbin0 -> 2124 bytes
-rw-r--r--askbot/skins/old/media/images/mail-envelope-empty.pngbin0 -> 547 bytes
-rw-r--r--askbot/skins/old/media/images/mail-envelope-full.pngbin0 -> 482 bytes
-rwxr-xr-xaskbot/skins/old/media/images/medala.gifbin0 -> 801 bytes
-rwxr-xr-xaskbot/skins/old/media/images/medala_on.gifbin0 -> 957 bytes
-rwxr-xr-xaskbot/skins/old/media/images/new.gifbin0 -> 635 bytes
-rwxr-xr-xaskbot/skins/old/media/images/nophoto.pngbin0 -> 696 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid.gifbin0 -> 910 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/aol.gifbin0 -> 2205 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/blogger.icobin0 -> 3638 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/claimid.icobin0 -> 3638 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/facebook.gifbin0 -> 2075 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/flickr.icobin0 -> 1150 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/google.gifbin0 -> 1596 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/livejournal.icobin0 -> 5222 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/myopenid.icobin0 -> 2862 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/openid-inputicon.gifbin0 -> 237 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/openid.gifbin0 -> 740 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/technorati.icobin0 -> 2294 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/twitter.pngbin0 -> 3130 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/verisign.icobin0 -> 4710 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/vidoop.icobin0 -> 1406 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/wordpress.icobin0 -> 1150 bytes
-rwxr-xr-xaskbot/skins/old/media/images/openid/yahoo.gifbin0 -> 1510 bytes
-rw-r--r--askbot/skins/old/media/images/print.pngbin0 -> 1391 bytes
-rw-r--r--askbot/skins/old/media/images/pw-login.gifbin0 -> 1818 bytes
-rwxr-xr-xaskbot/skins/old/media/images/quest-bg.gifbin0 -> 294 bytes
-rw-r--r--askbot/skins/old/media/images/sprite.pngbin0 -> 5325 bytes
-rw-r--r--askbot/skins/old/media/images/tag-left.pngbin0 -> 290 bytes
-rw-r--r--askbot/skins/old/media/images/tag-right.pngbin0 -> 187 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-accepted-on.pngbin0 -> 1124 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-accepted.pngbin0 -> 1058 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-arrow-down-on.pngbin0 -> 905 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-arrow-down.pngbin0 -> 876 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-arrow-up-on.pngbin0 -> 906 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-arrow-up.pngbin0 -> 843 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-favorite-off.pngbin0 -> 930 bytes
-rwxr-xr-xaskbot/skins/old/media/images/vote-favorite-on.pngbin0 -> 1023 bytes
-rw-r--r--askbot/skins/old/media/images/wiki.pngbin0 -> 5178 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/aol.gifbin0 -> 1872 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/blogger-1.pngbin0 -> 432 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/blogger.icobin0 -> 3638 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/claimid-0.pngbin0 -> 629 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/claimid.icobin0 -> 3638 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/facebook.gifbin0 -> 1737 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/flickr.icobin0 -> 1150 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/flickr.pngbin0 -> 426 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/google.gifbin0 -> 1528 bytes
-rw-r--r--askbot/skins/old/media/jquery-openid/images/identica.pngbin0 -> 6601 bytes
-rw-r--r--askbot/skins/old/media/jquery-openid/images/linkedin.gifbin0 -> 1530 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/livejournal-1.pngbin0 -> 713 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/livejournal.icobin0 -> 5222 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/myopenid-2.pngbin0 -> 511 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/myopenid.icobin0 -> 2862 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/openid-inputicon.gifbin0 -> 237 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/openid.gifbin0 -> 1473 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/openidico.pngbin0 -> 654 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/openidico16.pngbin0 -> 554 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/technorati-1.pngbin0 -> 606 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/technorati.icobin0 -> 2294 bytes
-rw-r--r--askbot/skins/old/media/jquery-openid/images/twitter.gifbin0 -> 1913 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/verisign-2.pngbin0 -> 859 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/verisign.icobin0 -> 4710 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/vidoop.icobin0 -> 1406 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/vidoop.pngbin0 -> 499 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/wordpress.icobin0 -> 1150 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/wordpress.pngbin0 -> 566 bytes
-rwxr-xr-xaskbot/skins/old/media/jquery-openid/images/yahoo.gifbin0 -> 1607 bytes
-rw-r--r--askbot/skins/old/media/jquery-openid/jquery.openid.js (renamed from askbot/skins/default/media/jquery-openid/jquery.openid.js)0
-rw-r--r--askbot/skins/old/media/jquery-openid/openid.css (renamed from askbot/skins/default/media/jquery-openid/openid.css)0
-rw-r--r--askbot/skins/old/media/js/autocompleter.js766
-rw-r--r--askbot/skins/old/media/js/compress.bat5
-rw-r--r--askbot/skins/old/media/js/editor.js75
-rw-r--r--askbot/skins/old/media/js/excanvas.min.js1
-rw-r--r--askbot/skins/old/media/js/flot-build.bat3
-rw-r--r--askbot/skins/old/media/js/i18n.js469
-rw-r--r--askbot/skins/old/media/js/jquery-1.4.3.js6883
-rw-r--r--askbot/skins/old/media/js/jquery-fieldselection.js83
-rw-r--r--askbot/skins/old/media/js/jquery-fieldselection.min.js1
-rw-r--r--askbot/skins/old/media/js/jquery.ajaxfileupload.js195
-rw-r--r--askbot/skins/old/media/js/jquery.flot.js2119
-rw-r--r--askbot/skins/old/media/js/jquery.flot.min.js1
-rw-r--r--askbot/skins/old/media/js/jquery.form.js654
-rw-r--r--askbot/skins/old/media/js/jquery.i18n.js133
-rw-r--r--askbot/skins/old/media/js/jquery.openid.js176
-rw-r--r--askbot/skins/old/media/js/jquery.validate.js1146
-rw-r--r--askbot/skins/old/media/js/jquery.validate.min.js16
-rw-r--r--askbot/skins/old/media/js/jquery.validate.pack.js15
-rw-r--r--askbot/skins/old/media/js/live_search.js613
-rw-r--r--askbot/skins/old/media/js/output-words.html49
-rw-r--r--askbot/skins/old/media/js/output-words.js97
-rw-r--r--askbot/skins/old/media/js/post.js1665
-rw-r--r--askbot/skins/old/media/js/se_hilite.js1
-rw-r--r--askbot/skins/old/media/js/se_hilite_src.js273
-rw-r--r--askbot/skins/old/media/js/tag_selector.js375
-rw-r--r--askbot/skins/old/media/js/user.js (renamed from askbot/skins/default/media/js/user.js)0
-rw-r--r--askbot/skins/old/media/js/utils.js423
-rwxr-xr-xaskbot/skins/old/media/js/wmd/images/wmd-buttons.pngbin0 -> 11480 bytes
-rw-r--r--askbot/skins/old/media/js/wmd/showdown-min.js1
-rw-r--r--askbot/skins/old/media/js/wmd/showdown.js1332
-rw-r--r--askbot/skins/old/media/js/wmd/wmd-min.js1
-rw-r--r--askbot/skins/old/media/js/wmd/wmd-test.html158
-rw-r--r--askbot/skins/old/media/js/wmd/wmd.css (renamed from askbot/skins/default/media/js/wmd/wmd.css)0
-rw-r--r--askbot/skins/old/media/js/wmd/wmd.js (renamed from askbot/skins/default/media/js/wmd/wmd.js)0
-rw-r--r--askbot/skins/old/media/style/auth.css48
-rw-r--r--askbot/skins/old/media/style/jquery.autocomplete.css37
-rw-r--r--askbot/skins/old/media/style/openid.css45
-rw-r--r--askbot/skins/old/media/style/prettify.css27
-rw-r--r--askbot/skins/old/media/style/style.css2474
-rw-r--r--askbot/skins/old/templates/404.html5
-rw-r--r--askbot/skins/old/templates/404.jinja.html44
-rw-r--r--askbot/skins/old/templates/500.html5
-rw-r--r--askbot/skins/old/templates/500.jinja.html25
-rw-r--r--askbot/skins/old/templates/about.html10
-rw-r--r--askbot/skins/old/templates/answer_edit.html80
-rw-r--r--askbot/skins/old/templates/ask.html63
-rw-r--r--askbot/skins/old/templates/authopenid/changeemail.html80
-rw-r--r--askbot/skins/old/templates/authopenid/complete.html84
-rw-r--r--askbot/skins/old/templates/authopenid/confirm_email.txt12
-rw-r--r--askbot/skins/old/templates/authopenid/email_validation.txt14
-rw-r--r--askbot/skins/old/templates/authopenid/logout.html (renamed from askbot/skins/default/templates/authopenid/logout.html)0
-rw-r--r--askbot/skins/old/templates/authopenid/macros.html58
-rw-r--r--askbot/skins/old/templates/authopenid/providers_javascript.html55
-rw-r--r--askbot/skins/old/templates/authopenid/signin.html (renamed from askbot/skins/default/templates/authopenid/signin.html)0
-rw-r--r--askbot/skins/old/templates/authopenid/signup_with_password.html (renamed from askbot/skins/default/templates/authopenid/signup_with_password.html)0
-rw-r--r--askbot/skins/old/templates/avatar/add.html15
-rw-r--r--askbot/skins/old/templates/avatar/change.html24
-rw-r--r--askbot/skins/old/templates/avatar/confirm_delete.html (renamed from askbot/skins/default/templates/avatar/confirm_delete.html)0
-rw-r--r--askbot/skins/old/templates/badge.html24
-rw-r--r--askbot/skins/old/templates/badges.html60
-rw-r--r--askbot/skins/old/templates/base.html70
-rw-r--r--askbot/skins/old/templates/blocks/README (renamed from askbot/skins/default/templates/blocks/README)0
-rw-r--r--askbot/skins/old/templates/blocks/answer_edit_tips.html (renamed from askbot/skins/default/templates/blocks/answer_edit_tips.html)0
-rw-r--r--askbot/skins/old/templates/blocks/ask_form.html (renamed from askbot/skins/default/templates/blocks/ask_form.html)0
-rw-r--r--askbot/skins/old/templates/blocks/bottom_scripts.html95
-rw-r--r--askbot/skins/old/templates/blocks/editor_data.html10
-rw-r--r--askbot/skins/old/templates/blocks/footer.html (renamed from askbot/skins/default/templates/blocks/footer.html)0
-rw-r--r--askbot/skins/old/templates/blocks/forum_body.html (renamed from askbot/skins/default/templates/blocks/forum_body.html)0
-rw-r--r--askbot/skins/old/templates/blocks/header.html (renamed from askbot/skins/default/templates/blocks/header.html)0
-rw-r--r--askbot/skins/old/templates/blocks/header_meta_links.html (renamed from askbot/skins/default/templates/blocks/header_meta_links.html)0
-rw-r--r--askbot/skins/old/templates/blocks/input_bar.html (renamed from askbot/skins/default/templates/blocks/input_bar.html)0
-rw-r--r--askbot/skins/old/templates/blocks/mandatory_tags_js.html25
-rw-r--r--askbot/skins/old/templates/blocks/paginator.html (renamed from askbot/skins/default/templates/blocks/paginator.html)0
-rw-r--r--askbot/skins/old/templates/blocks/question_edit_tips.html (renamed from askbot/skins/default/templates/blocks/question_edit_tips.html)0
-rw-r--r--askbot/skins/old/templates/blocks/system_messages.html (renamed from askbot/skins/default/templates/blocks/system_messages.html)0
-rw-r--r--askbot/skins/old/templates/blocks/tag_selector.html (renamed from askbot/skins/default/templates/blocks/tag_selector.html)0
-rw-r--r--askbot/skins/old/templates/close.html27
-rw-r--r--askbot/skins/old/templates/faq.html9
-rw-r--r--askbot/skins/old/templates/faq_static.html99
-rw-r--r--askbot/skins/old/templates/feedback.html46
-rw-r--r--askbot/skins/old/templates/feedback_email.txt13
-rw-r--r--askbot/skins/old/templates/import_data.html31
-rw-r--r--askbot/skins/old/templates/instant_notification.html42
-rw-r--r--askbot/skins/old/templates/macros.html757
-rw-r--r--askbot/skins/old/templates/main_page.html24
-rw-r--r--askbot/skins/old/templates/main_page/content.html17
-rw-r--r--askbot/skins/old/templates/main_page/headline.html52
-rw-r--r--askbot/skins/old/templates/main_page/javascript.html30
-rw-r--r--askbot/skins/old/templates/main_page/nothing_found.html31
-rw-r--r--askbot/skins/old/templates/main_page/paginator.html7
-rw-r--r--askbot/skins/old/templates/main_page/sidebar.html46
-rw-r--r--askbot/skins/old/templates/main_page/tab_bar.html86
-rw-r--r--askbot/skins/old/templates/one_column_body.html (renamed from askbot/skins/default/templates/one_column_body.html)0
-rw-r--r--askbot/skins/old/templates/privacy.html8
-rw-r--r--askbot/skins/old/templates/question.html553
-rw-r--r--askbot/skins/old/templates/question_edit.html97
-rw-r--r--askbot/skins/old/templates/question_retag.html68
-rw-r--r--askbot/skins/old/templates/reopen.html38
-rw-r--r--askbot/skins/old/templates/revisions.html97
-rw-r--r--askbot/skins/old/templates/subscribe_for_tags.html19
-rw-r--r--askbot/skins/old/templates/tags.html75
-rw-r--r--askbot/skins/old/templates/two_column_body.html (renamed from askbot/skins/default/templates/two_column_body.html)0
-rw-r--r--askbot/skins/old/templates/user_profile/user.html42
-rw-r--r--askbot/skins/old/templates/user_profile/user_edit.html100
-rw-r--r--askbot/skins/old/templates/user_profile/user_email_subscriptions.html27
-rw-r--r--askbot/skins/old/templates/user_profile/user_favorites.html9
-rw-r--r--askbot/skins/old/templates/user_profile/user_inbox.html106
-rw-r--r--askbot/skins/old/templates/user_profile/user_info.html107
-rw-r--r--askbot/skins/old/templates/user_profile/user_moderate.html94
-rw-r--r--askbot/skins/old/templates/user_profile/user_network.html25
-rw-r--r--askbot/skins/old/templates/user_profile/user_recent.html42
-rw-r--r--askbot/skins/old/templates/user_profile/user_reputation.html40
-rw-r--r--askbot/skins/old/templates/user_profile/user_stats.html159
-rw-r--r--askbot/skins/old/templates/user_profile/user_tabs.html52
-rw-r--r--askbot/skins/old/templates/user_profile/user_votes.html30
-rw-r--r--askbot/skins/old/templates/user_profile/users_questions.html8
-rw-r--r--askbot/skins/old/templates/users.html58
-rw-r--r--askbot/skins/utils.py5
-rw-r--r--askbot/startup_procedures.py113
-rw-r--r--askbot/tests/__init__.py3
-rw-r--r--askbot/tests/cache_tests.py43
-rw-r--r--askbot/tests/db_api_tests.py3
-rw-r--r--askbot/tests/misc_tests.py60
-rw-r--r--askbot/tests/page_load_tests.py210
-rw-r--r--askbot/tests/permission_assertion_tests.py83
-rw-r--r--askbot/tests/post_model_tests.py55
-rw-r--r--askbot/tests/utils.py44
-rw-r--r--askbot/urls.py8
-rw-r--r--askbot/utils/forms.py20
-rw-r--r--askbot/views/meta.py18
-rw-r--r--askbot/views/readers.py187
-rw-r--r--askbot/views/users.py147
-rw-r--r--askbot/views/writers.py6
1110 files changed, 78477 insertions, 28705 deletions
diff --git a/.gitignore b/.gitignore
index f4c8a613..d6a06e66 100755
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
*.log
db
rebuild-locales.pl
+/src
cache/??
run
*.wsgi
@@ -26,16 +27,13 @@ tmp/*
load
askbot/skins/default/media/js/flot
askbot/skins/common/media/js/closure/google-closure
+askbot/skins/common/media/js/jquery.fancybox-1.3.4
askbot/fixtures
*.egg
dist
*.egg-info
build
-askbot/upfiles/*.jpg
-askbot/upfiles/*.jpeg
-askbot/upfiles/*.gif
-askbot/upfiles/*.png
-askbot/upfiles/*.ico
+askbot/upfiles/
askbot/upfiles/avatars/
askbot/skins/common/media/mathjax/
/jinja2
diff --git a/askbot/__init__.py b/askbot/__init__.py
index 12e4f7d7..1c822e05 100644
--- a/askbot/__init__.py
+++ b/askbot/__init__.py
@@ -9,7 +9,7 @@ import smtplib
import sys
import logging
-VERSION = (0, 7, 26)
+VERSION = (0, 7, 29)
#necessary for interoperability of django and coffin
try:
diff --git a/askbot/admin.py b/askbot/admin.py
index af62ed84..34722416 100644
--- a/askbot/admin.py
+++ b/askbot/admin.py
@@ -31,10 +31,7 @@ class VoteAdmin(admin.ModelAdmin):
class FavoriteQuestionAdmin(admin.ModelAdmin):
""" admin class"""
-class QuestionRevisionAdmin(admin.ModelAdmin):
- """ admin class"""
-
-class AnswerRevisionAdmin(admin.ModelAdmin):
+class PostRevisionAdmin(admin.ModelAdmin):
""" admin class"""
class AwardAdmin(admin.ModelAdmin):
@@ -52,8 +49,7 @@ 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.QuestionRevision, QuestionRevisionAdmin)
-admin.site.register(models.AnswerRevision, AnswerRevisionAdmin)
+admin.site.register(models.PostRevision, PostRevisionAdmin)
admin.site.register(models.Award, AwardAdmin)
admin.site.register(models.Repute, ReputeAdmin)
admin.site.register(models.Activity, ActivityAdmin)
diff --git a/askbot/conf/__init__.py b/askbot/conf/__init__.py
index 64fe41fb..4f228ea7 100644
--- a/askbot/conf/__init__.py
+++ b/askbot/conf/__init__.py
@@ -19,6 +19,7 @@ import askbot.conf.markup
import askbot.conf.social_sharing
import askbot.conf.badges
import askbot.conf.login_providers
+import askbot.conf.access_control
import askbot.conf.site_modes
#import main settings object
diff --git a/askbot/conf/access_control.py b/askbot/conf/access_control.py
new file mode 100644
index 00000000..cd2364b5
--- /dev/null
+++ b/askbot/conf/access_control.py
@@ -0,0 +1,21 @@
+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 _
+
+ACCESS_CONTROL = livesettings.ConfigurationGroup(
+ 'ACCESS_CONTROL',
+ _('Access control settings'),
+ super_group = LOGIN_USERS_COMMUNICATION
+ )
+
+settings.register(
+ livesettings.BooleanValue(
+ ACCESS_CONTROL,
+ 'ASKBOT_CLOSED_FORUM_MODE',
+ default = False,
+ description=_('Allow only registered user to access the forum'),
+ )
+)
+
+
diff --git a/askbot/conf/login_providers.py b/askbot/conf/login_providers.py
index 0cc20a9a..b6073eea 100644
--- a/askbot/conf/login_providers.py
+++ b/askbot/conf/login_providers.py
@@ -56,11 +56,11 @@ 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
+ 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/spam_and_moderation.py b/askbot/conf/spam_and_moderation.py
index e841ebf7..23cb9596 100644
--- a/askbot/conf/spam_and_moderation.py
+++ b/askbot/conf/spam_and_moderation.py
@@ -31,4 +31,3 @@ settings.register(
description=_('Akismet key for spam detection')
)
)
-
diff --git a/askbot/conf/vote_rules.py b/askbot/conf/vote_rules.py
index 5d275708..82c9b758 100644
--- a/askbot/conf/vote_rules.py
+++ b/askbot/conf/vote_rules.py
@@ -78,3 +78,13 @@ settings.register(
description=_('Number of flags required to automatically delete posts')
)
)
+
+settings.register(
+ IntegerValue(
+ VOTE_RULES,
+ 'MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER',
+ default=7,
+ description=_('Minimum days to accept an answer, '
+ 'if it has not been accepted by the question poster')
+ )
+)
diff --git a/askbot/const/__init__.py b/askbot/const/__init__.py
index 84b87fb6..764a3234 100644
--- a/askbot/const/__init__.py
+++ b/askbot/const/__init__.py
@@ -296,8 +296,8 @@ MIN_REPUTATION = 1
AVATAR_STATUS_CHOICE = (
('n', _('None')),
- ('g', _('Gravatar')),
- ('a', _('Uploaded Avatar')),
+ ('g', _('Gravatar')),#only if user has real uploaded gravatar
+ ('a', _('Uploaded Avatar')),#avatar uploaded locally - with django-avatar app
)
#an exception import * because that file has only strings
diff --git a/askbot/context.py b/askbot/context.py
index 6dc38f79..f3665240 100644
--- a/askbot/context.py
+++ b/askbot/context.py
@@ -13,8 +13,9 @@ from askbot.utils import url_utils
def application_settings(request):
"""The context processor function"""
my_settings = askbot_settings.as_dict()
- my_settings['LANGUAGE_CODE'] = settings.LANGUAGE_CODE
+ 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['DEBUG'] = settings.DEBUG
my_settings['ASKBOT_VERSION'] = askbot.get_version()
my_settings['LOGIN_URL'] = url_utils.get_login_url()
diff --git a/askbot/deps/django_authopenid/views.py b/askbot/deps/django_authopenid/views.py
index 5a81f702..ac406f1d 100644
--- a/askbot/deps/django_authopenid/views.py
+++ b/askbot/deps/django_authopenid/views.py
@@ -289,7 +289,13 @@ def signin(request):
on_failure = signin_failure
email_feeds_form = askbot_forms.SimpleEmailSubscribeForm()
- next_url = get_next_url(request)
+ #we need a special priority on where to redirect on successful login
+ #here:
+ #1) url parameter "next" - if explicitly set
+ #2) url from django setting LOGIN_REDIRECT_URL
+ #3) home page of the forum
+ login_redirect_url = getattr(settings, 'LOGIN_REDIRECT_URL', None)
+ next_url = get_next_url(request, default = login_redirect_url)
logging.debug('next url is %s' % next_url)
if askbot_settings.ALLOW_ADD_REMOVE_LOGIN_METHODS == False \
diff --git a/askbot/doc/source/changelog.rst b/askbot/doc/source/changelog.rst
index ca8c803b..31b21813 100644
--- a/askbot/doc/source/changelog.rst
+++ b/askbot/doc/source/changelog.rst
@@ -3,11 +3,25 @@ Changes in Askbot
Development version (not yet published)
---------------------------------------
+* Context-sensitive RSS url (`Dejan Noveski <http://www.atomidata.com/>`_)
+* Implemented new version of skin (Byron Corrales)
* Show unused vote count (Tomasz Zielinski)
* Categorized live settings (Evgeny)
+* Merge users management command (Daniel Mican)
* Added management command ``send_accept_answer_reminders`` (Evgeny)
* Improved the ``askbot-setup`` script (Adolfo, Evgeny)
* Merge users management command (Daniel Mican)
+* Anonymous caching of the question page (Vlad Bokov)
+* Fixed sharing button bug, css fixes for new template (Alexander Werner)
+* Added ASKBOT_TRANSLATE_URL setting for url localization(Alexander Werner)
+* Changed javascript translation model, moved from jqueryi18n to django (Rosandra Cuello Suñol)
+* Private forum mode (Vlad Bokov)
+* Improved text search query in Postgresql (Alexander Werner)
+* Take LANGUAGE_CODE from request (Alexander Werner)
+* Added support for LOGIN_REDIRECT_URL to the login app (hjwp, Evgeny)
+* Updated Italian localization (Luca Ferroni)
+* Added Catalan localization (Jordi Bofill)
+* Added management command ``askbot_add_test_content`` (Dejan Noveski)
0.7.26 (Current Version)
------------------------
diff --git a/askbot/doc/source/contributors.rst b/askbot/doc/source/contributors.rst
index d2dafb5a..30656c60 100644
--- a/askbot/doc/source/contributors.rst
+++ b/askbot/doc/source/contributors.rst
@@ -19,7 +19,9 @@ Programming and documentation
* `Hrishi <https://github.com/stultus>`_
* Andrei Mamoutkine
* `Daniel Mican <http://www.crunchbase.com/person/daniel-mican>`_
+* `Dejan Noveski <http://www.atomidata.com/>`_
* `Ramiro Morales <http://rmorales.com.ar/>`_ (with Machinalis)
+* Vladimir Bokov
* `NoahY <https://github.com/NoahY>`_
* `Gael Pasgrimaud <http://www.gawel.org/>`_ (bearstech)
* `Arun SAG <http://zer0c00l.in/>`_
@@ -28,6 +30,9 @@ Programming and documentation
* `Tomasz Zielinski <http://pyconsultant.eu/>`_
* `Tomasz Szynalski <http://antimoon.com>`_
* `Raghu Udiyar <http://raags.tumblr.com/>`_
+* `Alexander Werner <https://twitter.com/#!/bundeswerner>`_
+* Rosandra Cuello Suñol
+* `hjwp <https://github.com/hjwp>`_
Translations
------------
@@ -40,5 +45,6 @@ Translations
* Pekka Gaiser - German
* Pekka Järvinen - Finnish
* Adi Robian - Romanian
-* Dario Ghilardi, Federico Poloni - Italian
+* Dario Ghilardi, Federico Poloni, `Luca Ferroni <http://www.linkedin.com/in/lucaferroni>`_ - Italian
+* `Jordi Bofill <https://github.com/jbofill>`_ - Catalan
diff --git a/askbot/doc/source/customizing-skin-in-askbot.rst b/askbot/doc/source/customizing-skin-in-askbot.rst
index 686fc3ed..92680e52 100644
--- a/askbot/doc/source/customizing-skin-in-askbot.rst
+++ b/askbot/doc/source/customizing-skin-in-askbot.rst
@@ -198,3 +198,148 @@ These are not set in stone yet.
| /faq/ | |
| /feedback/ | |
+----------------------------+------------------------+
+
+Template Distrubution.
+======================
+
+Layouts
+-------
+
+The general template layout is controlled by a few files described below:
+
++------------------------------------+------------------------------------------------------+
+| Template File | Description |
++====================================+======================================================+
+| base.html | This is the base template, a container to call all |
+| | the template files required. |
++------------------------------------+------------------------------------------------------+
+| one_column_body.html | This is a base layout for one column style pages. |
++------------------------------------+------------------------------------------------------+
+| two_column_body.html | This is a base layout for two column style pages. |
++------------------------------------+------------------------------------------------------+
+| widgets/answer_edit_tips.html | Contains text displayed as "Answer Edit Tips" in the |
+| | answer edit page. |
++------------------------------------+------------------------------------------------------+
+| widgets/ask_form.html | Contains the form to ask a question. |
++------------------------------------+------------------------------------------------------+
+| widgets/bottom_scripts.html | Contains javascript calls and some javascript |
+| | functions needed for askbot this is included at the |
+| | bottom of every page. |
++------------------------------------+------------------------------------------------------+
+| widgets/editor_data.html | Contains data necessary for the post editor this is |
+| | included in block endjs. |
++------------------------------------+------------------------------------------------------+
+| widgets/footer.html | Contains the html displayed on the footer. |
++------------------------------------+------------------------------------------------------+
+| widgets/header.html | Contains the header section of the web. Normaly |
+| | includes the site logo and navitation tools. |
++------------------------------------+------------------------------------------------------+
+| widgets/mandatory_tags_js.html | Javascript functions for mandatory tags. |
++------------------------------------+------------------------------------------------------+
+| widgets/paginator.html | Renders the paginator in the main page. |
++------------------------------------+------------------------------------------------------+
+| widgets/question_edit_tips.html | Contains text displayed as "Question Edit Tips" in |
+| | the question edit page. |
++------------------------------------+------------------------------------------------------+
+| widgets/secondary_header.html | Containter for the search bar section. |
++------------------------------------+------------------------------------------------------+
+| widgets/system_messages.html | Containter for notification messages in the top of |
+| | the page. |
++------------------------------------+------------------------------------------------------+
+| widgets/user_navigation.html | User links to login/logout. |
++------------------------------------+------------------------------------------------------+
+
+Widgets
+-------
+
+Widgets are pieces of html code separated to be easily modified, they are located in the
+widgets folder and are called from several places in the templates.
+
++----------------------------+------------------------------+--------------------------------+
+| Widget name | Used in | Description |
++============================+==============================+================================+
+| ask_button.html | widgets/secondary_header.html | Just the "ask a question" |
+| | | button |
++----------------------------+------------------------------+--------------------------------+
+| answer_controls.html | question.html | Answer operation links, edit |
+| | | report as spam and more. |
++----------------------------+------------------------------+--------------------------------+
+| contributors.html | main_page/sidebar.html | Widget to display contributors |
+| | | avatars. |
++----------------------------+------------------------------+--------------------------------+
+| logo.html | widgets/header.html | Contains the site logo. |
++----------------------------+------------------------------+--------------------------------+
+| main_menu.html | widgets/secondary_header.html| Contains the main menu html |
++----------------------------+------------------------------+--------------------------------+
+| meta_nav.html | widgets/header.html | Widget for the me logo. |
++----------------------------+------------------------------+--------------------------------+
+| question_controls.html | question.html | Question operation links, edit |
+| | | report as spam and more. |
++----------------------------+------------------------------+--------------------------------+
+| question_vote_buttons.html | question.html | Vote buttons used in question |
++----------------------------+------------------------------+--------------------------------+
+| related_tags.html | main_page/sidebar.html | Question operation links, edit |
+| | | report as spam and more. |
++----------------------------+------------------------------+--------------------------------+
+| search_bar.html | widgets/secondary_header.html| Contains the search bar. |
++----------------------------+------------------------------+--------------------------------+
+| share_buttons.html | question.html | Widget to show the social |
+| | | sharing buttons. |
++----------------------------+------------------------------+--------------------------------+
+| tag_selector.html | main_page/sidebar.html | Contains the tag selector for |
+| | | search. |
++----------------------------+------------------------------+--------------------------------+
+| user_navigation.html | widgets/header.html | User navigation links like |
+| | | login, logout. |
++----------------------------+------------------------------+--------------------------------+
+
+Template per URL
+----------------
+
+According to the URL some template files are called, the detail on
+which file is called is in the following table.
+
++----------------------------+-----------------------------+--------------------------------+
+| Page url | Template file | Macros used |
++============================+=============================+================================+
+| /questions/ | main_page.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /questions/ask/ | ask.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /tags | tags.html | tag_widget, paginator, |
+| | | tag_cloud |
++----------------------------+-----------------------------+--------------------------------+
+| /question/<id>/<slug> | question.html | tag_widget, edit_post |
+| | | checkbox_in_div, share |
++----------------------------+-----------------------------+--------------------------------+
+| /questions/<id>/revisions | revisions.html | post_contributor_info |
++----------------------------+-----------------------------+--------------------------------+
+| /questions/<id>/edit | question-edit.html | tag_autocomplete_js, |
+| | | checkbox_in_div, |
+| | | edit_post |
++----------------------------+-----------------------------+--------------------------------+
+| /answers/<id>/revisions | revisions.html | post_contributor_info |
++----------------------------+-----------------------------+--------------------------------+
+| /users/ | users.html | users_list, paginator |
++----------------------------+-----------------------------+--------------------------------+
+| /users/<id>/slug | user_profile/user.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /users/<id>/edit (bug!) | user_profile/user_edit.html | gravatar |
++----------------------------+-----------------------------+--------------------------------+
+| /account/signin/ | authopenid/signin.html | provider_buttons |
+| | | (from authopenid/macros) |
++----------------------------+-----------------------------+--------------------------------+
+| /avatar/change/ | avatar/change.html | gravatar |
++----------------------------+-----------------------------+--------------------------------+
+| /about/ | about.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /badges/ | badges.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /badges/<id>/ | badge.html | user_score_and_badge_summary |
++----------------------------+-----------------------------+--------------------------------+
+| /account/logout/ | authopenid/logout.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /faq/ | faq.html | |
++----------------------------+-----------------------------+--------------------------------+
+| /feedback/ | feedback.html | |
++----------------------------+-----------------------------+--------------------------------+
diff --git a/askbot/doc/source/management-commands.rst b/askbot/doc/source/management-commands.rst
index d69c8673..b1ee5bc5 100644
--- a/askbot/doc/source/management-commands.rst
+++ b/askbot/doc/source/management-commands.rst
@@ -175,3 +175,5 @@ the developers of the Askbot project:
| | remaining commands that are expected to be run from the |
| | site root directory. |
+--------------------------------+-------------------------------------------------------------+
+| `askbot_add_test_content` | Creates content with dummy data for testing |
++--------------------------------+-------------------------------------------------------------+
diff --git a/askbot/feed.py b/askbot/feed.py
index e0c69454..7f41fd4f 100644
--- a/askbot/feed.py
+++ b/askbot/feed.py
@@ -137,11 +137,27 @@ class RssLastestQuestionsFeed(Feed):
def items(self, item):
"""get questions for the feed
"""
- return Question.objects.filter(
- deleted=False
- ).order_by(
- '-last_activity_at'
- )[:30]
+ #initial filtering
+ qs = Question.objects.filter(deleted=False)
+
+ #get search string and tags from GET
+ query = self.request.GET.get("q", None)
+ tags = self.request.GET.getlist("tags")
+
+ if query:
+ #if there's a search string, use the
+ #question search method
+ qs = qs.get_by_text_query(query)
+
+ if tags:
+ #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]
+
+
def main():
"""main function for use as a script
diff --git a/askbot/forms.py b/askbot/forms.py
index 0769f180..241a52f9 100644
--- a/askbot/forms.py
+++ b/askbot/forms.py
@@ -43,7 +43,7 @@ def clean_marked_tagnames(tagnames):
wildcards.append(tagname)
else:
pure_tags.append(tagname)
-
+
return pure_tags, wildcards
def filter_choices(remove_choices = None, from_choices = None):
@@ -75,7 +75,7 @@ COUNTRY_CHOICES = (('unknown',_('select country')),) + countries.COUNTRIES
class CountryField(forms.ChoiceField):
"""this is better placed into the django_coutries app"""
-
+
def __init__(self, *args, **kwargs):
"""sets label and the country choices
"""
@@ -253,7 +253,7 @@ class SummaryField(forms.CharField):
class DumpUploadForm(forms.Form):
"""This form handles importing
- data into the forum. At the moment it only
+ data into the forum. At the moment it only
supports stackexchange import.
"""
dump_file = forms.FileField()
@@ -397,7 +397,7 @@ class ChangeUserStatusForm(forms.Form):
self.fields['user_status'].choices = user_status_choices
#set prompt option as default
- self.fields['user_status'].default = 'select'
+ self.fields['user_status'].default = 'select'
self.moderator = moderator
self.subject = subject
@@ -539,11 +539,41 @@ class NotARobotForm(forms.Form):
)
class FeedbackForm(forms.Form):
- name = forms.CharField(label=_('Your name:'), required=False)
- email = forms.EmailField(label=_('Email (not shared with anyone):'), required=False)
- message = forms.CharField(label=_('Your message:'), max_length=800,widget=forms.Textarea(attrs={'cols':60}))
+ 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})
+ )
+ no_email = forms.BooleanField(
+ label=_("I don't want to give my email or receive a response:"),
+ required=False
+ )
next = NextUrlField()
+ def __init__(self, is_auth=False, *args, **kwargs):
+ super(FeedbackForm, self).__init__(*args, **kwargs)
+ self.is_auth = is_auth
+ if not is_auth:
+ if askbot_settings.USE_RECAPTCHA:
+ self._add_recaptcha_field()
+
+ def _add_recaptcha_field(self):
+ self.fields['recaptcha'] = RecaptchaField(
+ 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']:
+ 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"""
@@ -567,7 +597,7 @@ class FormWithHideableFields(object):
class AskForm(forms.Form, FormWithHideableFields):
"""the form used to askbot questions
- field ask_anonymously is shown to the user if the
+ field ask_anonymously is shown to the user if the
if ALLOW_ASK_ANONYMOUSLY live setting is True
however, for simplicity, the value will always be present
in the cleaned data, and will evaluate to False if the
@@ -600,7 +630,7 @@ class AskForm(forms.Form, FormWithHideableFields):
"""
if askbot_settings.ALLOW_ASK_ANONYMOUSLY == False:
self.cleaned_data['ask_anonymously'] = False
- return self.cleaned_data['ask_anonymously']
+ return self.cleaned_data['ask_anonymously']
class AskByEmailForm(forms.Form):
@@ -860,16 +890,16 @@ class EditUserForm(forms.Form):
)
realname = forms.CharField(
- label=_('Real name'),
- required=False,
- max_length=255,
+ label=_('Real name'),
+ required=False,
+ max_length=255,
widget=forms.TextInput(attrs={'size' : 35})
)
website = forms.URLField(
- label=_('Website'),
- required=False,
- max_length=255,
+ label=_('Website'),
+ required=False,
+ max_length=255,
widget=forms.TextInput(attrs={'size' : 35})
)
@@ -957,7 +987,7 @@ class TagFilterSelectionForm(forms.ModelForm):
if before != after:
return True
return False
-
+
class EmailFeedSettingField(forms.ChoiceField):
def __init__(self, *arg, **kwarg):
@@ -1086,7 +1116,7 @@ class SimpleEmailSubscribeForm(forms.Form):
('n',_('no community email please, thanks'))
)
subscribe = forms.ChoiceField(
- widget=forms.widgets.RadioSelect,
+ widget=forms.widgets.RadioSelect,
error_messages={'required':_('please choose one of the options above')},
choices=SIMPLE_SUBSCRIBE_CHOICES
)
diff --git a/askbot/locale/ca/LC_MESSAGES/django.mo b/askbot/locale/ca/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..0954aa55
--- /dev/null
+++ 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
new file mode 100644
index 00000000..52348d0e
--- /dev/null
+++ b/askbot/locale/ca/LC_MESSAGES/django.po
@@ -0,0 +1,4903 @@
+# 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: 2011-11-27 02:25-0600\n"
+"PO-Revision-Date: 2011-11-21:10:00-0100\n"
+"Last-Translator: Jordi Bofill <jordi.bofill@upc.edu>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \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 "Els visitants anònims no tenen accés a aquesta funció"
+
+#: feed.py:26 feed.py:100
+msgid " - "
+msgstr ""
+
+#: feed.py:26
+msgid "Individual question feed"
+msgstr "Canal de pregunta individual"
+
+#: feed.py:100
+msgid "latest questions"
+msgstr "preguntes recents"
+
+#: forms.py:74
+msgid "select country"
+msgstr "escollir país"
+
+#: forms.py:83
+msgid "Country"
+msgstr "País"
+
+#: forms.py:91
+msgid "Country field is required"
+msgstr "Els país és necessari"
+
+#: forms.py:104
+msgid "title"
+msgstr "títol"
+
+#: forms.py:105
+msgid "please enter a descriptive title for your question"
+msgstr "Introduir 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:119
+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
+msgid "tags"
+msgstr "etiquetes"
+
+#: forms.py:136
+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."
+
+#: forms.py:164
+msgid "tags are required"
+msgstr "es requereixen etiquetes"
+
+#: forms.py:173
+#, 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
+#, 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
+#, 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"
+msgstr ""
+
+#: forms.py:233
+msgid "community wiki (karma is not awarded & many others can edit wiki post)"
+msgstr ""
+"wiki comunitari (no es concedeix karma; altres usuaris poden editar "
+"l'entrada)"
+
+#: 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 ""
+"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
+msgid "update summary:"
+msgstr "resum actualitzat:"
+
+#: forms.py:251
+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 "
+"d'estil, aquest camp és opcional)"
+
+#: forms.py:327
+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
+msgid "approved"
+msgstr "aprovat"
+
+#: forms.py:342 const/__init__.py:251
+msgid "watched"
+msgstr "vist"
+
+#: forms.py:343 const/__init__.py:252
+msgid "suspended"
+msgstr "suspès"
+
+#: forms.py:344 const/__init__.py:253
+msgid "blocked"
+msgstr "bloquejat"
+
+#: forms.py:346
+msgid "administrator"
+msgstr "administrador"
+
+#: forms.py:347 const/__init__.py:249
+msgid "moderator"
+msgstr "moderador"
+
+#: forms.py:367
+msgid "Change status to"
+msgstr "Canviar estat a"
+
+#: forms.py:394
+msgid "which one?"
+msgstr "quin?"
+
+#: forms.py:415
+msgid "Cannot change own status"
+msgstr "No es pot canviar el pròpi estat"
+
+#: forms.py:421
+msgid "Cannot turn other user to moderator"
+msgstr "No es pot canviar l'altre usuari a moderador"
+
+#: forms.py:428
+msgid "Cannot change status of another moderator"
+msgstr "No es pot canviar l'estat d'un altre moderador"
+
+#: forms.py:434
+msgid "Cannot change status to admin"
+msgstr "No es pot canviar a l'estat d'administrador "
+
+#: forms.py:440
+#, 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
+msgid "Subject line"
+msgstr "Línia d'assumpte"
+
+#: forms.py:456
+msgid "Message text"
+msgstr "Text del missatge"
+
+#: forms.py:542
+#, fuzzy
+msgid "Your name (optional):"
+msgstr "El seu nom:"
+
+#: forms.py:543
+#, fuzzy
+msgid "Email:"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: forms.py:545
+msgid "Your message:"
+msgstr "El vostre missatge:"
+
+#: 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
+msgid "ask anonymously"
+msgstr "preguntar anònimament"
+
+#: forms.py:613
+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
+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
+msgid "reveal identity"
+msgstr "mostrar identitat"
+
+#: forms.py:835
+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
+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
+msgid "this email will be linked to gravatar"
+msgstr "aquest correu electrònic s'enllaçarà al Gravatar"
+
+#: forms.py:893
+msgid "Real name"
+msgstr "Nom real"
+
+#: forms.py:900
+msgid "Website"
+msgstr "Lloc web"
+
+#: forms.py:907
+msgid "City"
+msgstr "Ciutat"
+
+#: forms.py:916
+msgid "Show country"
+msgstr "Mostrar país"
+
+#: forms.py:921
+msgid "Date of birth"
+msgstr "Data de naixament"
+
+#: forms.py:922
+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
+msgid "Profile"
+msgstr "Perfil"
+
+#: forms.py:937
+msgid "Screen name"
+msgstr "Nom a mostrar"
+
+#: forms.py:968 forms.py:969
+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
+msgid "Choose email tag filter"
+msgstr "Escollir etiqueta filtre per el correu electrònic"
+
+#: forms.py:1023
+msgid "Asked by me"
+msgstr "Preguntat per mi"
+
+#: forms.py:1026
+msgid "Answered by me"
+msgstr "Respost per mi"
+
+#: forms.py:1029
+msgid "Individually selected"
+msgstr "Seleccionat individualment"
+
+#: forms.py:1032
+msgid "Entire forum (tag filtered)"
+msgstr "Forum senser (filtrar per etiqueta)"
+
+#: forms.py:1036
+msgid "Comments and posts mentioning me"
+msgstr "Comentaris i entrades us mencionen"
+
+#: forms.py:1115
+msgid "okay, let's try!"
+msgstr "d'acord, provem-ho!"
+
+#: forms.py:1116
+msgid "no community email please, thanks"
+msgstr "no correus electrònics de la comunitat"
+
+#: forms.py:1120
+msgid "please choose one of the options above"
+msgstr "escollir una de les opcions anteriors"
+
+#: urls.py:57
+msgid "about/"
+msgstr "sobre/"
+
+#: urls.py:58
+msgid "faq/"
+msgstr ""
+
+#: urls.py:59
+msgid "privacy/"
+msgstr "privacitat"
+
+#: urls.py:61 urls.py:66
+msgid "answers/"
+msgstr "respostes"
+
+#: urls.py:61 urls.py:87 urls.py:207
+msgid "edit/"
+msgstr "editar"
+
+#: urls.py:66 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
+msgid "questions/"
+msgstr "preguntes/"
+
+#: urls.py:82
+msgid "ask/"
+msgstr "preguntar/"
+
+#: urls.py:92
+msgid "retag/"
+msgstr "reetiquetar/"
+
+#: urls.py:97
+msgid "close/"
+msgstr "tancar/"
+
+#: urls.py:102
+msgid "reopen/"
+msgstr "reobrir/"
+
+#: urls.py:107
+msgid "answer/"
+msgstr "resposta/"
+
+#: urls.py:112
+msgid "vote/"
+msgstr "vot/"
+
+#: urls.py:153
+msgid "tags/"
+msgstr "etiquetes/"
+
+#: urls.py:196
+msgid "subscribe-for-tags/"
+msgstr "subscriure-per-etiquetes"
+
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+msgid "users/"
+msgstr "usuaris/"
+
+#: urls.py:214
+msgid "subscriptions/"
+msgstr "subscripcions/"
+
+#: urls.py:226
+msgid "users/update_has_custom_avatar/"
+msgstr "usuaris/actualitzacio_te_avatar_personalitzat/"
+
+#: urls.py:231 urls.py:236
+msgid "badges/"
+msgstr "insignies/"
+
+#: urls.py:241
+msgid "messages/"
+msgstr "missatges/"
+
+#: urls.py:241
+msgid "markread/"
+msgstr "marcarllegit/"
+
+#: urls.py:257
+msgid "upload/"
+msgstr "penjar/"
+
+#: urls.py:258
+msgid "feedback/"
+msgstr "comentaris/"
+
+#: urls.py:300
+msgid "question/"
+msgstr "pregunta/"
+
+#: urls.py:307 setup_templates/settings.py:206
+msgid "account/"
+msgstr "compte/"
+
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "User login"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
+msgid "Badge settings"
+msgstr "Configuració de les insígnies"
+
+#: conf/badges.py:23
+msgid "Disciplined: minimum upvotes for deleted post"
+msgstr "Disciplinat: mínim vots positius per entrada esborrada"
+
+#: conf/badges.py:32
+msgid "Peer Pressure: minimum downvotes for deleted post"
+msgstr "Pressió Companys: mínim vots negatius per a l'entrada eliminada"
+
+#: conf/badges.py:41
+msgid "Teacher: minimum upvotes for the answer"
+msgstr "Mestre: mínim vots positius per la resposta"
+
+#: 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 "Configuració del correu electrònic i alertes per correu electrònic"
+
+#: conf/email.py:24
+msgid "Prefix for the email subject line"
+msgstr "Prefix de assumpte del correu electrònic "
+
+#: 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 "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
+msgid "Default notification frequency all questions"
+msgstr "Freqüència predeterminada de notificació per a totes les preguntes"
+
+#: conf/email.py:50
+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
+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
+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
+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
+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
+msgid ""
+"Default notification frequency questions individually "
+"selected by the user"
+msgstr ""
+
+#: conf/email.py:93
+msgid ""
+"Option to define frequency of emailed updates for: Question individually "
+"selected by the user."
+msgstr ""
+
+#: conf/email.py:105
+msgid ""
+"Default notification frequency for mentions and "
+"comments"
+msgstr ""
+
+#: conf/email.py:108
+msgid ""
+"Option to define frequency of emailed updates for: Mentions and comments."
+msgstr ""
+
+#: conf/email.py:119
+msgid "Send periodic reminders about unanswered questions"
+msgstr ""
+
+#: 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:134
+msgid "Days before starting to send reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:145
+msgid ""
+"How often to send unanswered question reminders (in days between the "
+"reminders sent)."
+msgstr ""
+
+#: conf/email.py:157
+msgid "Max. number of reminders to send about unanswered questions"
+msgstr ""
+
+#: conf/email.py:168
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
+msgid "Require email verification before allowing to post"
+msgstr ""
+
+#: conf/email.py:219
+msgid ""
+"Active email verification is done by sending a verification key in email"
+msgstr ""
+
+#: conf/email.py:228
+msgid "Allow only one account per email address"
+msgstr ""
+
+#: conf/email.py:237
+msgid "Fake email for anonymous user"
+msgstr ""
+
+#: conf/email.py:238
+msgid "Use this setting to control gravatar for email-less user"
+msgstr ""
+
+#: conf/email.py:247
+#, fuzzy
+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."
+
+#: conf/email.py:249
+msgid ""
+"Before enabling this setting - please fill out IMAP settings in the settings."
+"py file"
+msgstr ""
+
+#: conf/email.py:260
+msgid "Replace space in emailed tags with dash"
+msgstr ""
+
+#: conf/email.py:262
+msgid ""
+"This setting applies to tags written in the subject line of questions asked "
+"by email"
+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:60
+msgid "Recaptcha public key"
+msgstr ""
+
+#: conf/external_keys.py:68
+msgid "Recaptcha private key"
+msgstr ""
+
+#: conf/external_keys.py:70
+#, 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:82
+msgid "Facebook public API key"
+msgstr ""
+
+#: conf/external_keys.py:84
+#, 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:97
+msgid "Facebook secret key"
+msgstr ""
+
+#: conf/external_keys.py:105
+msgid "Twitter consumer key"
+msgstr ""
+
+#: conf/external_keys.py:107
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:118
+msgid "Twitter consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:126
+msgid "LinkedIn consumer key"
+msgstr ""
+
+#: conf/external_keys.py:128
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
+msgstr ""
+
+#: conf/external_keys.py:139
+msgid "LinkedIn consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:147
+msgid "ident.ca consumer key"
+msgstr ""
+
+#: conf/external_keys.py:149
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
+"site</a>"
+msgstr ""
+
+#: conf/external_keys.py:160
+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 ""
+
+#: 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:22
+#, python-format
+msgid ""
+"Enable embedding videos. <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
+#, fuzzy
+msgid "Allow posting before logging 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."
+
+#: 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
+#, fuzzy
+msgid "Allow swapping answer with question"
+msgstr "Post Your Answer"
+
+#: 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:95
+msgid "Mandatory tags"
+msgstr ""
+
+#: 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:110
+msgid "Force lowercase the tags"
+msgstr ""
+
+#: 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:126
+msgid "Format of tag list"
+msgstr ""
+
+#: 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:140
+#, fuzzy
+msgid "Use wildcard tags"
+msgstr "Tags"
+
+#: 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:155
+msgid "Default max number of comments to display under posts"
+msgstr ""
+
+#: conf/forum_data_rules.py:166
+#, python-format
+msgid "Maximum comment length, must be < %(max_len)s"
+msgstr ""
+
+#: conf/forum_data_rules.py:176
+msgid "Limit time to edit comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:178
+msgid "If unchecked, there will be no time limit to edit the comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:189
+msgid "Minutes allowed to edit a comment"
+msgstr ""
+
+#: conf/forum_data_rules.py:190
+msgid "To enable this setting, check the previous one"
+msgstr ""
+
+#: conf/forum_data_rules.py:199
+msgid "Save comment by pressing <Enter> key"
+msgstr ""
+
+#: conf/forum_data_rules.py:208
+msgid "Minimum length of search term for Ajax search"
+msgstr ""
+
+#: conf/forum_data_rules.py:209
+msgid "Must match the corresponding database backend setting"
+msgstr ""
+
+#: conf/forum_data_rules.py:218
+msgid "Do not make text query sticky in search"
+msgstr ""
+
+#: 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:233
+msgid "Maximum number of tags per question"
+msgstr ""
+
+#: conf/forum_data_rules.py:245
+msgid "Number of questions to list by default"
+msgstr ""
+
+#: conf/forum_data_rules.py:255
+msgid "What should \"unanswered question\" mean?"
+msgstr ""
+
+#: conf/license.py:13
+msgid "Content LicensContent 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:62
+msgid "Upload your icon"
+msgstr ""
+
+#: conf/login_providers.py:92
+#, python-format
+msgid "Activate %(provider)s login"
+msgstr ""
+
+#: conf/login_providers.py:97
+#, 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
+#, fuzzy
+msgid "Answer own question immediately"
+msgstr "Post Your Answer"
+
+#: 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/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
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "User login"
+
+#: conf/sidebar_question.py:11
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tags"
+
+#: 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:68
+msgid "Base URL for your Q&A forum, must start with http or https"
+msgstr ""
+
+#: conf/site_settings.py:79
+msgid "Check to enable greeting for anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:90
+msgid "Text shown in the greeting message shown to the anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:94
+msgid "Use HTML to format the message "
+msgstr ""
+
+#: conf/site_settings.py:103
+msgid "Feedback site URL"
+msgstr ""
+
+#: conf/site_settings.py:105
+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:39
+msgid "Show logo"
+msgstr ""
+
+#: 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:53
+msgid "Site favicon"
+msgstr ""
+
+#: conf/skin_general_settings.py:55
+#, 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:73
+msgid "Password login button"
+msgstr ""
+
+#: 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:90
+msgid "Show all UI functions to all users"
+msgstr ""
+
+#: 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 ""
+
+#: conf/skin_general_settings.py:107
+msgid "Select skin"
+msgstr ""
+
+#: conf/skin_general_settings.py:118
+msgid "Customize HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:127
+msgid "Custom portion of the HTML <HEAD>"
+msgstr ""
+
+#: 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:151
+msgid "Custom header additions"
+msgstr ""
+
+#: 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:168
+msgid "Site footer mode"
+msgstr ""
+
+#: 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:187
+msgid "Custom footer (HTML format)"
+msgstr ""
+
+#: 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:204
+msgid "Apply custom style sheet (CSS)"
+msgstr ""
+
+#: 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:218
+msgid "Custom style sheet (CSS)"
+msgstr ""
+
+#: 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:236
+msgid "Add custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:239
+msgid "Check to enable javascript that you can enter in the next field"
+msgstr ""
+
+#: conf/skin_general_settings.py:249
+msgid "Custom javascript"
+msgstr ""
+
+#: 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:269
+msgid "Skin media revision number"
+msgstr ""
+
+#: conf/skin_general_settings.py:271
+msgid "Will be set automatically but you can modify it if necessary."
+msgstr ""
+
+#: conf/skin_general_settings.py:282
+msgid "Hash to update the media revision number automatically."
+msgstr ""
+
+#: conf/skin_general_settings.py:286
+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:12
+#, fuzzy
+msgid "User settings"
+msgstr "User login"
+
+#: conf/user_settings.py:21
+msgid "Allow editing user screen name"
+msgstr ""
+
+#: conf/user_settings.py:30
+#, fuzzy
+msgid "Allow account recovery 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/user_settings.py:39
+msgid "Allow adding and removing login methods"
+msgstr ""
+
+#: conf/user_settings.py:49
+msgid "Minimum allowed length for screen name"
+msgstr ""
+
+#: conf/user_settings.py:59
+msgid "Default Gravatar icon type"
+msgstr ""
+
+#: 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:71
+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 ""
+
+#: const/__init__.py:10
+msgid "duplicate question"
+msgstr "pregunta repetida"
+
+#: const/__init__.py:11
+msgid "question is off-topic or not relevant"
+msgstr "pregunta no pertinent o fora de tema"
+
+#: const/__init__.py:12
+msgid "too subjective and argumentative"
+msgstr "massa subjectiva o argumentativa"
+
+#: const/__init__.py:13
+msgid "not a real question"
+msgstr "no és una pregunta real"
+
+#: const/__init__.py:14
+msgid "the question is answered, right answer was accepted"
+msgstr "s'ha respost la pregunta, es va acceptar la resposta correcta"
+
+#: 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:41
+msgid "newest"
+msgstr "més recent"
+
+#: const/__init__.py:42
+msgid "oldest"
+msgstr "més antic"
+
+#: const/__init__.py:43
+msgid "active"
+msgstr "actiu"
+
+#: const/__init__.py:44
+msgid "inactive"
+msgstr "inactiu"
+
+#: const/__init__.py:45
+msgid "hottest"
+msgstr "més populars"
+
+#: const/__init__.py:46
+msgid "coldest"
+msgstr ""
+
+#: const/__init__.py:47
+msgid "most voted"
+msgstr ""
+
+#: const/__init__.py:48
+msgid "least voted"
+msgstr "més votat"
+
+#: const/__init__.py:49
+msgid "relevance"
+msgstr ""
+
+#: const/__init__.py:57
+msgid "all"
+msgstr "tot"
+
+#: const/__init__.py:58
+msgid "unanswered"
+msgstr "sense resposta"
+
+#: const/__init__.py:59
+msgid "favorite"
+msgstr "favorit"
+
+#: const/__init__.py:64
+#, fuzzy
+msgid "list"
+msgstr "llista"
+
+#: const/__init__.py:65
+msgid "cloud"
+msgstr "núbol"
+
+#: const/__init__.py:78
+msgid "Question has no answers"
+msgstr "La pregunta no té respostes"
+
+#: const/__init__.py:79
+msgid "Question has no accepted answers"
+msgstr "La pregunta no té respostes acceptades"
+
+#: const/__init__.py:122
+msgid "asked a question"
+msgstr "ha fet una pregunta"
+
+#: const/__init__.py:123
+msgid "answered a question"
+msgstr "ha respost una pregunta"
+
+#: const/__init__.py:124
+msgid "commented question"
+msgstr "ha comentat una pregunta"
+
+#: const/__init__.py:125
+msgid "commented answer"
+msgstr "ha commentat una resposta"
+
+#: const/__init__.py:126
+msgid "edited question"
+msgstr "ha editat una pregunta"
+
+#: const/__init__.py:127
+msgid "edited answer"
+msgstr "ha editat una resposta"
+
+#: const/__init__.py:128
+msgid "received award"
+msgstr "ha rebut una insígnia"
+
+#: const/__init__.py:129
+msgid "marked best answer"
+msgstr "ha marcat la millor resposta"
+
+#: const/__init__.py:130
+msgid "upvoted"
+msgstr "votat positivament"
+
+#: const/__init__.py:131
+msgid "downvoted"
+msgstr "votat negativament"
+
+#: const/__init__.py:132
+msgid "canceled vote"
+msgstr "cancelat el vot"
+
+#: const/__init__.py:133
+msgid "deleted question"
+msgstr "pregunta esborrada"
+
+#: const/__init__.py:134
+msgid "deleted answer"
+msgstr "resposta esborrada"
+
+#: const/__init__.py:135
+msgid "marked offensive"
+msgstr "marcat com ofensiu"
+
+#: const/__init__.py:136
+msgid "updated tags"
+msgstr "etiquetes actualitzades"
+
+#: const/__init__.py:137
+msgid "selected favorite"
+msgstr "seleccionat com a favorit"
+
+#: const/__init__.py:138
+msgid "completed user profile"
+msgstr "completat perfil d'usuari"
+
+#: const/__init__.py:139
+msgid "email update sent to user"
+msgstr "enviat missatge d'actualitació a l'usuari"
+
+#: const/__init__.py:142
+msgid "reminder about unanswered questions sent"
+msgstr "enviat recordatori d'una pregunta sense resposta"
+
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "enviat recordatori d'una pregunta sense resposta"
+
+#: const/__init__.py:148
+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"
+
+#: const/__init__.py:206
+msgid "[closed]"
+msgstr "[tancat]"
+
+#: const/__init__.py:207
+msgid "[deleted]"
+msgstr "[esborrat]"
+
+#: const/__init__.py:208 views/readers.py:589
+msgid "initial version"
+msgstr "versió inicial"
+
+#: const/__init__.py:209
+msgid "retagged"
+msgstr "reetiquetat"
+
+#: const/__init__.py:217
+msgid "off"
+msgstr "no"
+
+#: const/__init__.py:218
+msgid "exclude ignored"
+msgstr "excloure ignorades"
+
+#: const/__init__.py:219
+msgid "only selected"
+msgstr "només seleccionades"
+
+#: const/__init__.py:223
+msgid "instantly"
+msgstr "instantàniament"
+
+#: const/__init__.py:224
+msgid "daily"
+msgstr "diari"
+
+#: const/__init__.py:225
+msgid "weekly"
+msgstr "setmanal"
+
+#: const/__init__.py:226
+msgid "no email"
+msgstr "no correu electrònic"
+
+#: const/__init__.py:233
+msgid "identicon"
+msgstr ""
+
+#: const/__init__.py:234
+msgid "mystery-man"
+msgstr ""
+
+#: const/__init__.py:235
+msgid "monsterid"
+msgstr ""
+
+#: const/__init__.py:236
+#, fuzzy
+msgid "wavatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: const/__init__.py:237
+msgid "retro"
+msgstr ""
+
+#: const/__init__.py:284
+msgid "gold"
+msgstr "or"
+
+#: const/__init__.py:285
+msgid "silver"
+msgstr "plata"
+
+#: const/__init__.py:286
+msgid "bronze"
+msgstr "bronze"
+
+#: const/__init__.py:298
+msgid "None"
+msgstr "Cap"
+
+#: const/__init__.py:299
+#, fuzzy
+msgid "Gravatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: const/__init__.py:300
+#, fuzzy
+msgid "Uploaded Avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: const/message_keys.py:15
+msgid "most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:16
+msgid "click to see most relevant questions"
+msgstr "clicar per mostra les preguntes més rellevants"
+
+#: const/message_keys.py:17
+msgid "by relevance"
+msgstr "rellevància"
+
+#: const/message_keys.py:18
+msgid "click to see the oldest questions"
+msgstr "clicar per mostrar les preguntes més antigues"
+
+#: const/message_keys.py:19
+msgid "by date"
+msgstr "data"
+
+#: const/message_keys.py:20
+msgid "click to see the newest questions"
+msgstr "clicar per mostrar les preguntes més recents"
+
+#: const/message_keys.py:21
+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
+msgid "by activity"
+msgstr "activitat"
+
+#: const/message_keys.py:23
+msgid "click to see the most recently updated questions"
+msgstr "clicar per mostar les preguntes actualitzades recentment"
+
+#: const/message_keys.py:24
+msgid "click to see the least answered questions"
+msgstr "clicar per mostrar les preguntes amb menys respostes"
+
+#: const/message_keys.py:25
+msgid "by answers"
+msgstr "respostes"
+
+#: const/message_keys.py:26
+msgid "click to see the most answered questions"
+msgstr "clicar per mostrar les preguntes amb més respostes"
+
+#: const/message_keys.py:27
+msgid "click to see least voted questions"
+msgstr "clicar per mostrar les preguntes amb menys votades"
+
+#: const/message_keys.py:28
+msgid "by votes"
+msgstr "vots"
+
+#: const/message_keys.py:29
+msgid "click to see most voted questions"
+msgstr "clicar per mostrar les preguntes amb més votades"
+
+#: deps/django_authopenid/backends.py:88
+msgid ""
+"Welcome! Please set email address (important!) in your profile and adjust "
+"screen name, if necessary."
+msgstr ""
+"Us donem la benvinguda. Indiqueu la vostra 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
+msgid "i-names are not supported"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:233
+#, python-format
+msgid "Please enter your %(username_token)s"
+msgstr "Introduïu el vostre %(username_token)s"
+
+#: deps/django_authopenid/forms.py:259
+msgid "Please, enter your user name"
+msgstr "Introduïu el vostre nom d'usuari"
+
+#: deps/django_authopenid/forms.py:263
+msgid "Please, enter your password"
+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 "Introduïu la vostra contrasenya nova"
+
+#: deps/django_authopenid/forms.py:285
+msgid "Passwords did not match"
+msgstr "Les contrasenyes no coincideixen"
+
+#: deps/django_authopenid/forms.py:297
+#, python-format
+msgid "Please choose password > %(len)s characters"
+msgstr "Escollir una contrasenya de més de %(len)s caràcters"
+
+#: deps/django_authopenid/forms.py:335
+msgid "Current password"
+msgstr "Contrasenya actual"
+
+#: deps/django_authopenid/forms.py:346
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+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 "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 "El vostre nom d'usuari (<i>requerit</i>)"
+
+#: deps/django_authopenid/forms.py:450
+msgid "Incorrect username."
+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:206
+msgid "signin/"
+msgstr "entrar/"
+
+#: deps/django_authopenid/urls.py:10
+msgid "signout/"
+msgstr "sortir/"
+
+#: 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 "registre/"
+
+#: deps/django_authopenid/urls.py:25
+msgid "logout/"
+msgstr "sortir/"
+
+#: 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 "nom d'usuari i contrasenya %(site)s"
+
+#: deps/django_authopenid/util.py:384
+msgid "Create a password-protected account"
+msgstr "Crear un compte amb contrasenya"
+
+#: deps/django_authopenid/util.py:385
+msgid "Change your password"
+msgstr "Canviar la vostra contrasenya"
+
+#: deps/django_authopenid/util.py:473
+msgid "Sign in with Yahoo"
+msgstr "Registrar-se mitjançant Yahoo"
+
+#: 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:158
+#, 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
+#, 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
+msgid "Your new password saved"
+msgstr ""
+
+#: deps/django_authopenid/views.py:475
+msgid "The login password combination was not correct"
+msgstr ""
+
+#: deps/django_authopenid/views.py:579
+msgid "Please click any of the icons below to sign in"
+msgstr ""
+
+#: deps/django_authopenid/views.py:581
+msgid "Account recovery email sent"
+msgstr ""
+
+#: deps/django_authopenid/views.py:584
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: deps/django_authopenid/views.py:586
+msgid "If you wish, please add, remove or re-validate your login methods"
+msgstr ""
+
+#: deps/django_authopenid/views.py:588
+msgid "Please wait a second! Your account is recovered, but ..."
+msgstr ""
+
+#: deps/django_authopenid/views.py:590
+msgid "Sorry, this account recovery key has expired or is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:663
+#, python-format
+msgid "Login method %(provider_name)s does not exist"
+msgstr ""
+
+#: deps/django_authopenid/views.py:669
+msgid "Oops, sorry - there was some error - please try again"
+msgstr ""
+
+#: deps/django_authopenid/views.py:760
+#, python-format
+msgid "Your %(provider)s login works fine"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#, 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
+msgid "Recover your %(site)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1168
+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:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
+msgid "Base Settings"
+msgstr ""
+
+#: deps/livesettings/values.py:234
+msgid "Default value: \"\""
+msgstr ""
+
+#: deps/livesettings/values.py:241
+msgid "Default value: "
+msgstr ""
+
+#: deps/livesettings/values.py:244
+#, python-format
+msgid "Default value: %s"
+msgstr ""
+
+#: deps/livesettings/values.py:622
+#, 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"
+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
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for 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!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "clicar per mostrar les preguntes amb menys respostes"
+
+#: management/commands/send_email_alerts.py:411
+#, 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
+#, 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] ""
+"<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
+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
+#, 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='%(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
+#, 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
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+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."
+
+#: models/__init__.py:317
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"blocked"
+msgstr ""
+
+#: models/__init__.py:321
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"suspended"
+msgstr ""
+
+#: models/__init__.py:334
+#, python-format
+msgid ""
+">%(points)s points required to accept or unaccept your own answer to your "
+"own question"
+msgstr ""
+
+#: models/__init__.py:353
+#, 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
+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"
+msgstr "Sorry, you cannot vote for your own posts"
+
+#: models/__init__.py:392
+msgid "Sorry your account appears to be blocked "
+msgstr ""
+
+#: models/__init__.py:397
+msgid "Sorry your account appears to be suspended "
+msgstr ""
+
+#: models/__init__.py:407
+#, python-format
+msgid ">%(points)s points required to upvote"
+msgstr ">%(points)s points required to upvote "
+
+#: models/__init__.py:413
+#, python-format
+msgid ">%(points)s points required to downvote"
+msgstr ">%(points)s points required to downvote "
+
+#: models/__init__.py:428
+msgid "Sorry, blocked users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:429
+msgid "Sorry, suspended users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:431
+#, 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"
+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
+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:490
+msgid "Sorry, but only post owners or moderators can edit comments"
+msgstr ""
+
+#: models/__init__.py:503
+msgid ""
+"Sorry, since your account is suspended you can comment only your own posts"
+msgstr ""
+
+#: models/__init__.py:507
+#, 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
+msgid ""
+"This post has been deleted and can be seen only by post owners, site "
+"administrators and moderators"
+msgstr ""
+
+#: models/__init__.py:552
+msgid ""
+"Sorry, only moderators, site administrators and post owners can edit deleted "
+"posts"
+msgstr ""
+
+#: models/__init__.py:567
+msgid "Sorry, since your account is blocked you cannot edit posts"
+msgstr ""
+
+#: models/__init__.py:571
+msgid "Sorry, since your account is suspended you can edit only your own posts"
+msgstr ""
+
+#: models/__init__.py:576
+#, python-format
+msgid ""
+"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:583
+#, python-format
+msgid ""
+"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: models/__init__.py:661
+msgid "Sorry, since your account is blocked you cannot delete posts"
+msgstr ""
+
+#: models/__init__.py:665
+msgid ""
+"Sorry, since your account is suspended you can delete only your own posts"
+msgstr ""
+
+#: models/__init__.py:669
+#, python-format
+msgid ""
+"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
+"is required"
+msgstr ""
+
+#: models/__init__.py:689
+msgid "Sorry, since your account is blocked you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:693
+msgid "Sorry, since your account is suspended you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:697
+#, python-format
+msgid ""
+"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:706
+#, python-format
+msgid ""
+"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:730
+#, python-format
+msgid ""
+"Sorry, only administrators, moderators or post owners with reputation > "
+"%(min_rep)s can reopen questions."
+msgstr ""
+
+#: models/__init__.py:736
+#, 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"
+msgstr ""
+"Sorry, since your account is blocked you cannot flag posts as offensive"
+
+#: models/__init__.py:763
+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."
+
+#: models/__init__.py:765
+#, python-format
+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"
+
+#: models/__init__.py:784
+#, python-format
+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."
+
+#: models/__init__.py:799
+msgid ""
+"Sorry, only question owners, site administrators and moderators can retag "
+"deleted questions"
+msgstr ""
+
+#: models/__init__.py:806
+msgid "Sorry, since your account is blocked you cannot retag questions"
+msgstr ""
+
+#: models/__init__.py:810
+msgid ""
+"Sorry, since your account is suspended you can retag only your own questions"
+msgstr ""
+
+#: models/__init__.py:814
+#, python-format
+msgid ""
+"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot delete comment"
+msgstr ""
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, since your account is suspended you can delete only your own comments"
+msgstr ""
+
+#: models/__init__.py:841
+#, 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:1339 utils/functions.py:70
+#, python-format
+msgid "on %(date)s"
+msgstr ""
+
+#: models/__init__.py:1341
+msgid "in two days"
+msgstr ""
+
+#: models/__init__.py:1343
+msgid "tomorrow"
+msgstr ""
+
+#: models/__init__.py:1345
+#, python-format
+msgid "in %(hr)d hour"
+msgid_plural "in %(hr)d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1347
+#, python-format
+msgid "in %(min)d min"
+msgid_plural "in %(min)d mins"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1348
+#, python-format
+msgid "%(days)d day"
+msgid_plural "%(days)d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1350
+#, 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
+msgid "Anonymous"
+msgstr ""
+
+#: models/__init__.py:1612 views/users.py:371
+msgid "Site Adminstrator"
+msgstr ""
+
+#: models/__init__.py:1614 views/users.py:373
+msgid "Forum Moderator"
+msgstr ""
+
+#: models/__init__.py:1616 views/users.py:375
+msgid "Suspended User"
+msgstr ""
+
+#: models/__init__.py:1618 views/users.py:377
+msgid "Blocked User"
+msgstr ""
+
+#: models/__init__.py:1620 views/users.py:379
+msgid "Registered User"
+msgstr ""
+
+#: models/__init__.py:1622
+msgid "Watched User"
+msgstr ""
+
+#: models/__init__.py:1624
+msgid "Approved User"
+msgstr ""
+
+#: models/__init__.py:1733
+#, python-format
+msgid "%(username)s karma is %(reputation)s"
+msgstr ""
+
+#: models/__init__.py:1743
+#, python-format
+msgid "one gold badge"
+msgid_plural "%(count)d gold badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1750
+#, python-format
+msgid "one silver badge"
+msgid_plural "%(count)d silver badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1757
+#, python-format
+msgid "one bronze badge"
+msgid_plural "%(count)d bronze badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1768
+#, python-format
+msgid "%(item1)s and %(item2)s"
+msgstr ""
+
+#: models/__init__.py:1772
+#, 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
+#, python-format
+msgid "Question: \"%(title)s\""
+msgstr ""
+
+#: models/__init__.py:2386
+#, 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
+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:776
+msgid "Expert"
+msgstr ""
+
+#: models/badges.py:779
+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
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent question has been removed"
+msgstr ""
+
+#: 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/question.py:63
+#, python-format
+msgid "\" and \"%s\""
+msgstr ""
+
+#: models/question.py:66
+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/repute.py:142
+#, python-format
+msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+msgstr ""
+
+#: models/repute.py:153
+#, python-format
+msgid ""
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
+msgstr ""
+
+#: models/repute.py:158
+#, python-format
+msgid ""
+"%(points)s points were subtracted for %(username)s's contribution to "
+"question %(question_title)s"
+msgstr ""
+
+#: models/tag.py:151
+msgid "interesting"
+msgstr ""
+
+#: models/tag.py:151
+msgid "ignored"
+msgstr ""
+
+#: models/user.py:264
+msgid "Entire forum"
+msgstr ""
+
+#: models/user.py:265
+msgid "Questions that I asked"
+msgstr ""
+
+#: models/user.py:266
+msgid "Questions that I answered"
+msgstr ""
+
+#: models/user.py:267
+msgid "Individually selected questions"
+msgstr ""
+
+#: models/user.py:268
+msgid "Mentions and comment responses"
+msgstr ""
+
+#: models/user.py:271
+msgid "Instantly"
+msgstr ""
+
+#: models/user.py:272
+msgid "Daily"
+msgstr ""
+
+#: models/user.py:273
+msgid "Weekly"
+msgstr ""
+
+#: models/user.py:274
+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 ""
+
+#: 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 ""
+"<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/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 ""
+"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"
+"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
+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 ""
+
+#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
+msgid "no items in counter"
+msgstr "no"
+
+#: 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 ""
+
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+
+#: utils/forms.py:32
+msgid "this field is required"
+msgstr ""
+
+#: utils/forms.py:46
+msgid "choose a username"
+msgstr "Choose screen name"
+
+#: utils/forms.py:52
+msgid "user name is required"
+msgstr ""
+
+#: utils/forms.py:53
+msgid "sorry, this name is taken, please choose another"
+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"
+msgstr ""
+
+#: utils/forms.py:56
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+
+#: utils/forms.py:57
+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:119
+msgid "email address is required"
+msgstr ""
+
+#: utils/forms.py:120
+msgid "please enter a valid email address"
+msgstr ""
+
+#: utils/forms.py:121
+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
+msgid "password is required"
+msgstr ""
+
+#: utils/forms.py:153
+msgid "retype password"
+msgstr "Password <i>(please retype)</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"
+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] ""
+msgstr[1] ""
+
+#: utils/functions.py:85
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: 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:39
+msgid "anonymous users cannot vote"
+msgstr "Sorry, anonymous users cannot vote"
+
+#: views/commands.py:59
+msgid "Sorry you ran out of votes for today"
+msgstr ""
+
+#: views/commands.py:65
+#, 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
+msgid "Sorry, something is not right here..."
+msgstr ""
+
+#: views/commands.py:207
+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 ""
+"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>)."
+msgstr ""
+
+#: views/commands.py:409
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+
+#: views/commands.py:542
+msgid "Please sign in to vote"
+msgstr ""
+
+#: views/meta.py:84
+msgid "Q&A forum feedback"
+msgstr ""
+
+#: views/meta.py:85
+msgid "Thanks for the feedback!"
+msgstr ""
+
+#: views/meta.py:94
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
+
+#: views/readers.py:151
+#, fuzzy, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "Asked"
+msgstr[1] "Asked"
+
+#: views/readers.py:159
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
+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] ""
+msgstr[1] ""
+
+#: views/readers.py:415
+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
+msgid "moderate user"
+msgstr ""
+
+#: views/users.py:386
+msgid "user profile"
+msgstr ""
+
+#: views/users.py:387
+msgid "user profile overview"
+msgstr ""
+
+#: views/users.py:698
+msgid "recent user activity"
+msgstr ""
+
+#: views/users.py:699
+msgid "profile - recent activity"
+msgstr ""
+
+#: views/users.py:785
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: views/users.py:786
+msgid "profile - responses"
+msgstr ""
+
+#: views/users.py:860
+msgid "user vote record"
+msgstr ""
+
+#: views/users.py:861
+msgid "profile - votes"
+msgstr ""
+
+#: views/users.py:896
+msgid "user reputation in the community"
+msgstr "user karma"
+
+#: views/users.py:897
+msgid "profile - user reputation"
+msgstr "Profile - User's Karma"
+
+#: views/users.py:924
+msgid "users favorite questions"
+msgstr ""
+
+#: views/users.py:925
+msgid "profile - favorite questions"
+msgstr ""
+
+#: views/users.py:945 views/users.py:949
+msgid "changes saved"
+msgstr ""
+
+#: views/users.py:955
+msgid "email updates canceled"
+msgstr ""
+
+#: views/users.py:973
+msgid "email subscription settings"
+msgstr ""
+
+#: views/users.py:974
+msgid "profile - email subscriptions"
+msgstr ""
+
+#: views/writers.py:58
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
+
+#: views/writers.py:68
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr ""
+
+#: views/writers.py:91
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr ""
+
+#: views/writers.py:99
+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 ""
+"<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/writers.py:492
+#, fuzzy
+msgid "Please log in to answer 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!"
+
+#: views/writers.py:598
+#, 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
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
+
+#: views/writers.py:654
+#, 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
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
+
+#~ msgid "Change email"
+#~ msgstr "Change Email"
+
+#, fuzzy
+#~ msgid "Save your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
+
+#~ 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>)"
+
+#, 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>."
+
+#~ 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."
+
+#, 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 "
+#~ "%(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 "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>"
+
+#, fuzzy
+#~ msgid "Password"
+#~ msgstr "Password"
+
+#~ 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."
+
+#~ 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."
+
+#, fuzzy
+#~ 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"
+#~ msgstr "Tags"
+
+#~ msgid "Interesting tags"
+#~ msgstr "Etiquetes interessants"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "Afegir"
+
+#, fuzzy
+#~ msgid "Ignored tags"
+#~ msgstr "Retag question"
+
+#~ msgid "Display tag filter"
+#~ msgstr "Filtre per etiquetes"
+
+#, 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"
+#~ 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"
+
+#~ 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>\n"
+
+#~ 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 "
+#~ "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"
+
+#, 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 "
+#~ "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 ""
+#~ "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 "
+#~ "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"
+
+#, 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 "answers"
+
+#, fuzzy
+#~ msgid "\"delete any comment"
+#~ msgstr "post a comment"
+
+#~ 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>"
+
+#, 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 "<p>Sincerely,<br/>Forum Administrator</p>"
+#~ msgstr ""
+#~ "Sincerely,\n"
+#~ "Q&A Forum Administrator"
+
+#, fuzzy
+#~ msgid "anonymous user"
+#~ msgstr "Sorry, anonymous users cannot vote"
+
+#, fuzzy
+#~ msgid "answered"
+#~ msgstr "answers"
+
+#, 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"
+
+#, 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"
+
+#, fuzzy
+#~ msgid "by name"
+#~ msgstr "date"
+
+#, fuzzy
+#~ msgid "by popularity"
+#~ msgstr "most voted"
+
+#~ msgid "Users"
+#~ msgstr "People"
+
+#~ msgid "reputation"
+#~ msgstr "karma"
+
+#, fuzzy
+#~ msgid "by username"
+#~ msgstr "Choose screen name"
+
+#, 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."
+
+#~ msgid "Please, post your question!"
+#~ msgstr "Fes la teva pregunta"
+
+#~ 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 "oldest"
+
+#, 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</"
+#~ "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 "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 "Tags"
+
+#~ 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"
+
+#~ 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 "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 "Update"
+#~ msgstr "date"
+
+#, 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> "
+#~ "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"
+
+#, fuzzy
+#~ msgid "followed questions"
+#~ msgstr "Ask Your Question"
+
+#~ msgid "member for"
+#~ msgstr "member since"
+
+#~ msgid "user website"
+#~ msgstr "website"
+
+#, fuzzy
+#~ msgid "location"
+#~ msgstr "Hi, there! Please sign in"
+
+#~ 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"
+
+#~ msgid "Add"
+#~ msgstr "Afegir"
+
+#, 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 "activity"
+#~ msgstr "activity"
+
+#, 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"
+
+#, fuzzy
+#~ msgid "recent activity"
+#~ msgstr "activity"
+
+#~ 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 ""
+#~ "<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 "Markdown tips"
+#~ msgstr "Markdown basics"
+
+#, fuzzy
+#~ msgid "link"
+#~ msgstr "Hi, there! Please sign in"
+
+#, fuzzy
+#~ msgid "ask a question"
+#~ msgstr "La Teva Pregunta"
+
+#~ 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"
+#~ " 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 "Ask your question"
+#~ msgstr "Ask Your Question"
+
+#~ msgid "users"
+#~ msgstr "gent"
+
+#~ msgid "badges"
+#~ msgstr "insígnies"
+
+#~ msgid "question tips"
+#~ msgstr "Consells"
+
+#~ msgid "please ask a relevant question"
+#~ msgstr "fes una pregunta interessant per a la comunitat"
+
+#~ msgid "please try provide enough details"
+#~ msgstr "dóna detalls suficients"
+
+#, fuzzy
+#~ msgid "see unanswered questions"
+#~ msgstr "Ask Your Question"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "Ask Your Question"
+
+#~ msgid "logout"
+#~ msgstr "sortir"
+
+#~ msgid "login"
+#~ msgstr "Registrar-se"
+
+#~ msgid "settings"
+#~ msgstr "User login"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "provide enough details"
+
+#~ msgid "Question tags"
+#~ msgstr "Tags"
+
+#, fuzzy
+#~ msgid "questions"
+#~ msgstr "Consells"
+
+#~ msgid "search"
+#~ msgstr "cerca"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "Correu electrònic (no es comparteix amb ningú)"
+
+#~ 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/ca/LC_MESSAGES/djangojs.mo b/askbot/locale/ca/LC_MESSAGES/djangojs.mo
new file mode 100644
index 00000000..30a5a601
--- /dev/null
+++ 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
new file mode 100644
index 00000000..390d8e0c
--- /dev/null
+++ b/askbot/locale/ca/LC_MESSAGES/djangojs.po
@@ -0,0 +1,341 @@
+# 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: 0.7\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"
+"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
+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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+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] "%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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
+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
+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 ""
+
+#: 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
+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
+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
+msgid "following %s"
+msgstr "seguint a %s"
+
+#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
+#, c-format
+msgid "follow %s"
+msgstr "seguir a %s"
+
+#: skins/common/media/js/utils.js:43
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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/de/LC_MESSAGES/django.mo b/askbot/locale/de/LC_MESSAGES/django.mo
index 668a17c4..a48a1401 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 c072aa70..4e94d72c 100644
--- a/askbot/locale/de/LC_MESSAGES/django.po
+++ b/askbot/locale/de/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:26-0600\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"Plural-Forms: nplurals=2; plural=n!= 1;\n"
"X-Translated-Using: django-rosetta 0.5.3\n"
@@ -138,20 +138,20 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
#, fuzzy
msgid "suspended"
msgstr "aktualisiert"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -160,7 +160,7 @@ msgstr ""
msgid "administrator"
msgstr "Ihr Forumsteam"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
#, fuzzy
msgid "moderator"
msgstr "benutzer-moderieren/"
@@ -209,463 +209,508 @@ msgid "Message text"
msgstr "Nachrichtentext:"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Ihr Name:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Ihre E-Mail-Adresse (wird nicht angezeigt):"
+#, fuzzy
+msgid "Email:"
+msgstr "E-Mail"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Ihre Nachricht:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "Anonym"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: 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:863
+#: forms.py:893
msgid "Real name"
msgstr "Echter Name"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Website"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Geburtsdatum"
-#: forms.py:892
+#: forms.py:922
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:898
+#: forms.py:928
msgid "Profile"
msgstr "Profil"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Nickname"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
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:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "E-Mail-Tag-Filter festlegen"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Von mir gefragt"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Von mir beantwortet"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Individuell ausgewählt"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Das ganze Forum (Tag-gefiltert)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "Okay, versuchen wir's!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "Ich möchte gar keine E-Mails erhalten, danke"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "Bitte wählen Sie eine der obenstehenden Optionen aus"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "ueber/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "faq/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "datenschutz/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "antworten/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "bearbeiten/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "revisionen/"
-#: 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: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/"
msgstr "fragen/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "frage/"
-#: urls.py:88
+#: urls.py:92
#, fuzzy
msgid "retag/"
msgstr "tags/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "schliessen/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "oeffnen/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "antwort/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "abstimmen/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "tags/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "benutzer/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "E-Mail-Abonnements"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "auszeichnungen/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "nachrichten/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "gelesen_markieren/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "upload/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "feedback/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "frage/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "zugang/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "einstellungen"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
#, fuzzy
msgid "Badge settings"
msgstr "einstellungen"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
#, fuzzy
msgid "Popular Question: minimum views"
msgstr "populäre Frage"
-#: conf/badges.py:111
+#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
msgstr "Bemerkenswerte Frage"
-#: conf/badges.py:120
+#: conf/badges.py:122
#, fuzzy
msgid "Famous Question: minimum views"
msgstr "Berühmte Frage"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "Favoritenfrage"
-#: conf/badges.py:201
+#: conf/badges.py:203
#, fuzzy
msgid "Stellar Question: minimum stars"
msgstr "Exzellente Frage"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr "Willkommen im Forum"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Fragen mit Tag '%(tag)s' anzeigen"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr ""
"Beliebige Fragen und Antworten löschen und weitere Moderationsfunktionen"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Es gibt hier keine unbeantworteten Fragen"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Es gibt hier keine unbeantworteten Fragen"
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Es gibt hier keine unbeantworteten Fragen"
+
+#: 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "Es gibt hier keine unbeantworteten Fragen"
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
#, fuzzy
msgid "Allow only one account per email address"
msgstr "Ihre E-Mail-Adresse <i>(wird nie veröffentlicht)</i>"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -675,61 +720,61 @@ msgstr ""
"ganz schnell. Ihre Frage wird für die Dauer des Anmeldevorgangs im "
"Hintergrund gespeichert und geht nicht verloren."
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -737,11 +782,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -749,135 +794,135 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "Passwort ändern"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -885,226 +930,225 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Frage beantworten"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "tags aktualisiert"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "unanswered questions"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "einstellungen"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "Zurück zur Startseite"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1112,43 +1156,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1157,11 +1201,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1171,174 +1215,174 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
#, fuzzy
msgid "Upvote"
msgstr "Positiv bewerten"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
#, fuzzy
msgid "Downvote"
msgstr "Negativ bewerten"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Eigene Frage beantworten"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "Beliebige Antworten bearbeiten"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
#, fuzzy
msgid "Flag offensive"
msgstr "Als beleidigend melden"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
#, fuzzy
msgid "Leave comments"
msgstr "Kommentare hinzufügen"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
#, fuzzy
msgid "Delete questions and answers posted by others"
msgstr ""
"Beliebige Fragen und Antworten löschen und weitere Moderationsfunktionen"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
#, fuzzy
msgid "Upload files"
msgstr "dateien/"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
#, fuzzy
msgid "Close own questions"
msgstr "Frage schließen"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
#, fuzzy
msgid "Reopen own questions"
msgstr "Frage wieder eröffnen"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
#, fuzzy
msgid "Edit community wiki posts"
msgstr "Als \"Community Wiki\" markierte Fragen beantworten"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
#, fuzzy
msgid "View offensive flags"
msgstr "als beleidigend/illegal gemeldet"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
#, fuzzy
msgid "Close questions asked by others"
msgstr "Fragen mit Tag '%(tag)s' anzeigen"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
#, fuzzy
msgid "Gain for accepting best answer"
msgstr "als beste Antwort markiert"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1346,44 +1390,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1391,52 +1435,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "Benutzerprofil"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tags"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "Verwandte / ähnliche Fragen"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr "Klicken Sie, um die ältesten bearbeiteten Fragen zu sehen"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Titel"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1444,53 +1489,53 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
#, fuzzy
msgid "Site title for the Q&A forum"
msgstr "Grüße vom Forumsteam"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
#, fuzzy
msgid "Feedback site URL"
msgstr "Feedback"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1603,33 +1648,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1637,41 +1682,41 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
#, fuzzy
msgid "Select skin"
msgstr "Version auswählen"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1683,11 +1728,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1696,21 +1741,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1719,21 +1764,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1742,19 +1787,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1765,134 +1810,161 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Diese Frage wieder eröffnen"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "External Services"
+msgstr "Andere Dienste"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr ""
"Unsere Website benötigt Cookies, um technisch einwandfrei zu funktionieren."
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Ihre E-Mail-Adresse <i>(wird nie veröffentlicht)</i>"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "Duplikat"
@@ -1998,194 +2070,199 @@ msgstr "Fragen, die ich beantwortet habe"
msgid "Question has no accepted answers"
msgstr "Fragen, die ich beantwortet habe"
-#: const/__init__.py:121
+#: const/__init__.py:122
#, fuzzy
msgid "asked a question"
msgstr "Frage stellen"
-#: const/__init__.py:122
+#: const/__init__.py:123
#, fuzzy
msgid "answered a question"
msgstr "Unbeantwortete"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "kommentierte Frage"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "kommentierte Antwort"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "überarbeitete Frage"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "überarbeitete Antwort"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "Auszeichnung erhalten"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "als beste Antwort markiert"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "positiv bewertet"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "negativ bewertet"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "Bewertung zurückgezogen"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "Frage gelöscht"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "Antwort gelöscht"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "als beleidigend/illegal gemeldet"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "tags aktualisiert"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "Favorit ausgewählt"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "Benutzerprofil komplettiert"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "E-Mail-Update an Benutzer versandt"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "Unbeantwortete Fragen anzeigen"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "als beste Antwort markiert"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "Frage beantwortet"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "Frage kommentiert"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "Antwort kommentiert"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "Antwort akzeptiert"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[geschlossen]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[gelöscht]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "ursprüngliche Version"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "Tags verändert"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "Ignorierte Tags ausschließen"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "Individuell ausgewählt"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "täglich"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "wöchentlich"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "Keine E-Mail"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "gestern"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "Wie verändert man sein Profilbild (Avatar) und was ist Gravatar?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "Gold"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "Silber"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "Bronze"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2321,7 +2398,7 @@ msgid "Incorrect username."
msgstr "Ungültiger Benutzername."
#: 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:206
msgid "signin/"
msgstr "einloggen/"
@@ -2344,7 +2421,7 @@ msgstr "registrieren/"
#: deps/django_authopenid/urls.py:21
msgid "signup/"
-msgstr "registrieren/"
+msgstr ""
#: deps/django_authopenid/urls.py:25
msgid "logout/"
@@ -2455,77 +2532,77 @@ msgstr ""
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:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "Ihr Passwort wurde geändert."
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
#, 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:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, 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:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2534,106 +2611,33 @@ msgstr ""
msgid "Site"
msgstr "Titel"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
#, fuzzy
msgid "Base Settings"
msgstr "einstellungen"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Erlaubte Dateitypen: '%(file_types)s'"
-#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
-#, fuzzy
-msgid "Sites"
-msgstr "Titel"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-#, fuzzy
-msgid "Documentation"
-msgstr "Ort"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-msgid "Change password"
-msgstr "Passwort ändern"
-
-#: 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"
-
-#: 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 "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/group_settings.html:68
-#, fuzzy
-msgid "Setting groups"
-msgstr "die Tag-Beschränkung entfernen"
-
-#: 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 "Gratulation, Sie sind jetzt Administrator"
@@ -2661,15 +2665,15 @@ 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>"
+"<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>"
+"<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
@@ -2678,6 +2682,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, 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
+#, 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
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2739,70 +2758,81 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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>"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "Bitte einloggen"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, 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:347
+#: models/__init__.py:353
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, 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"
msgstr "Über selbst verfaßte Beiträge kann nicht abgestimmt werden"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "Positiv bewerten benötigt mindestens %(points)s Punkte "
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "Negativ bewerten benötigt mindestens %(points)s Punkte"
-#: models/__init__.py:414
+#: models/__init__.py:428
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2810,7 +2840,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:415
+#: models/__init__.py:429
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2818,13 +2848,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:417
+#: models/__init__.py:431
#, 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:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
#, fuzzy
msgid "blocked users cannot post"
msgstr ""
@@ -2832,7 +2862,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
#, fuzzy
msgid "suspended users cannot post"
msgstr ""
@@ -2840,7 +2870,7 @@ 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:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2851,56 +2881,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2910,61 +2940,61 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
#, fuzzy
msgid "blocked users cannot flag posts"
msgstr ""
@@ -2972,7 +3002,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:749
+#: models/__init__.py:763
#, fuzzy
msgid "suspended users cannot flag posts"
msgstr ""
@@ -2980,145 +3010,146 @@ 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:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "Bewertung kann nicht mehr zurückgenommen werden"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, 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:1333
+#: models/__init__.py:1347
#, 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:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "Anonym"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr "Ihr Forumsteam"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
#, fuzzy
msgid "Suspended User"
msgstr "Der Absender ist"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
#, fuzzy
msgid "Registered User"
msgstr "Registrierter Benutzer"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "Punkte-Logbuch von %(user_name)s"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3129,56 +3160,45 @@ msgstr[1] ""
"Silberne Auszeichnungen erzielt man durch regelmäßige, geduldige Teilnahme "
"am Forum."
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, 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:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "Tags"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "Die Frage wurde als Favorit ausgewählt"
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3456,54 +3476,65 @@ msgstr "Experte"
msgid "Very active in one tag"
msgstr "Sehr aktiv in einem bestimmten Tag"
-#: models/meta.py:112
+#: models/content.py:549
+#, 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
+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
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "Die Frage wurde als Favorit ausgewählt"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "Mehr Informationen"
-#: models/question.py:452
-#, fuzzy
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "Die Frage wurde als Favorit ausgewählt"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s hat die Frage bearbeitet"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s Benutzer haben die Frage kommentiert"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s Benutzer haben Kommentare zu Antworten verfaßt"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s Benutzer haben Kommentare zu einer Antwort verfaßt"
@@ -3516,8 +3547,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3571,6 +3602,88 @@ msgstr "Wöchentlich"
msgid "No email"
msgstr "Keine E-Mail"
+#: 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
+msgid ""
+"Sincerely,\n"
+"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
+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 ""
+"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/default/templates/feedback_email.txt:2
+#: skins/old/templates/feedback_email.txt:2
+#, fuzzy, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"Hallo, dies ist Feedback zu %(site_title)s \n"
+
+#: 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."
+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"
@@ -3756,138 +3869,117 @@ msgstr ""
msgid "Please sign in to vote"
msgstr "Bitte hier anmelden:"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "Forums-Feedback"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Vielen Dank für Ihr Feedback!"
-#: views/meta.py:92
+#: views/meta.py:94
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:131
+#: 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 Frage"
msgstr[1] "%(q_num)s Fragen"
-#: views/readers.py:139
+#: 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:177
+#: 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:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "abstimmen/"
-msgstr[1] "abstimmen/"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "Antwort"
-msgstr[1] "Antwort"
-
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "Einblendungen"
-msgstr[1] "Einblendungen"
-
-#: views/readers.py:440
+#: views/readers.py:415
#, 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:224
+#: views/users.py:211
#, fuzzy
msgid "moderate this user"
msgstr "Diesen Benutzer verwalten"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "benutzer-moderieren/"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "Benutzerprofil"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "Benutzerprofil-Ãœbersicht"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "Neueste Aktivitäten"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "Profil - neueste Aktivitäten"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "Kommentare und Antworten"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "Profil - Reaktionen"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "Abstimmungsverhalten"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "Abgegebene Bewertungen"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "Punktestand des Benutzers"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "Profil - Punktestand des Benutzers"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "Fragen in der Favoritenliste des Benutzers"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "Fragen in der Favoritenliste"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "Veränderungen gespeichert"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "E-Mail-Benachrichtigungen abgestellt"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "E-Mail-Abonnementeinstellungen"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "E-Mail-Abonnements"
@@ -3946,6 +4038,472 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#, fuzzy
+#~ msgid "Sites"
+#~ msgstr "Titel"
+
+#, fuzzy
+#~ msgid "Documentation"
+#~ msgstr "Ort"
+
+#~ msgid "Change password"
+#~ msgstr "Passwort ändern"
+
+#, fuzzy
+#~ msgid "Log out"
+#~ msgstr "Logout"
+
+#, fuzzy
+#~ msgid "Home"
+#~ msgstr "Home"
+
+#, fuzzy
+#~ msgid "Edit Group Settings"
+#~ msgstr "Frage bearbeiten"
+
+#, 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:"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
+
+#, fuzzy
+#~ msgid "(or select another login method above)"
+#~ msgstr "Bitte wählen Sie eine der oben genannten Optionen"
+
+#, fuzzy
+#~ msgid "Sign in"
+#~ msgstr "einloggen/"
+
+#~ msgid "Change email"
+#~ msgstr "E-Mail-Adresse ändern"
+
+#~ msgid "Save your email address"
+#~ msgstr "E-Mail-Adresse speichern"
+
+#~ msgid "change %(email)s info"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Geben Sie Ihre E-Mail-Adresse in untenstehende "
+#~ "Box ein</span> falls Sie sie für Ihre Benachrichtigungs-E-Mails ändern "
+#~ "möchten.<br>Im Moment verwenden Sie <strong>%(email)s</strong>"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<span class='strong big'>Bitte geben Sie unten Ihre E-Mail-Adresse ein.</"
+#~ "span> Eine gültige E-Mail-Adresse wird für dieses Forum benötigt. Falls "
+#~ "Sie möchten, können Sie <strong>Benachrichtigungsmails</strong> zu Sie "
+#~ "besonders interessierenden Fragen, oder Neuzugängen abonnieren. Ihre E-"
+#~ "Mail-Adresse wird auch benutzt, um ein individuelles sogenanntes <a "
+#~ "href='%(gravatar_faq_url)s'><strong>Gravatar</strong></a>-Bild für Ihr "
+#~ "Konto anzuzeigen. E-Mail-Adressen werden niemals öffentlich angezeigt."
+
+#~ msgid "Your new Email"
+#~ 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 "
+#~ "an %(email)s versandt.</span> Bitte <strong>klicken Sie auf den Link in "
+#~ "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"
+
+#~ 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"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr ""
+#~ "<span class='big strong'>Ihre E-Mail-Adresse wurde auf %(email)s "
+#~ "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-"
+#~ "Adresse!</span> Sie können jetzt <strong>Fragen stellen</strong> und "
+#~ "<strong>beantworten</strong>. Sie können bei interessanten Fragen auch "
+#~ "<strong>eine E-Mail-Benachrichtigung abonnieren</strong>, die Sie einmal "
+#~ "täglich oder seltener über neue Entwicklungen wie Antworten und "
+#~ "Kommentare informiert."
+
+#~ msgid "email key not sent"
+#~ msgstr "Bestätigungs-E-Mail nicht versandt"
+
+#~ 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 "Registrieren"
+
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Sie sind zum ersten Mal mit Ihrem OpenID-"
+#~ "Zugang von %(provider)s eingeloggt.</span> Bitte geben Sie einen "
+#~ "<strong>Benutzernamen</strong> ein 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>"
+
+#, fuzzy
+#~ 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'>Der Benutzername %(username)s ist leider "
+#~ "nicht mehr frei.</span></p><p> Eine gültige E-Mail-Adresse ist ebenfalls "
+#~ "erforderlich - an sie senden wir (optionale) Benachrichtigungsmails, und "
+#~ "mit ihr zeigen wir Ihr Benutzerbild (Gravatar) an. E-Mail-Adressen werden "
+#~ "nicht öffentlich angezeigt und auch nicht an Dritte weitergegeben.</p>"
+
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Sie sind zum ersten Mal mit Ihrem OpenID-"
+#~ "Zugang von %(provider)s eingeloggt.</span> Sie können einen "
+#~ "<strong>Benutzernamen</strong> eingeben oder Ihren Benutzernamen bei "
+#~ "%(provider)s verwenden. Bitte hinterlegen Sie auch 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>"
+
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Sie sind hier zum ersten Mal mit Ihrem "
+#~ "Facebook-Login.</span> Bitte legen Sie einen <strong>Benutzernamen</"
+#~ "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>"
+
+#~ msgid "This account already exists, please use another."
+#~ msgstr ""
+#~ "Dieser Benutzername existiert leider bereits, bitte wählen Sie einen "
+#~ "anderen."
+
+#~ msgid "Screen name label"
+#~ msgstr "<strong>Benutzername</strong> (<i>wird öffentlich angezeigt</i>)"
+
+#~ msgid "Email address label"
+#~ msgstr ""
+#~ "<strong>E-Mail-Adresse</strong> (<i>wird <strong>nicht</strong> "
+#~ "öffentlich angezeigt; muß gültig sein</i>)"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr ""
+#~ "<strong>Benachrichtigungen per E-Mail abonnieren</strong> Das Abonnieren "
+#~ "von E-Mail-Benachrichtigungen ist freiwillig. <br/>Das Forum versenden "
+#~ "bis zu <strong>einer Benachrichtigung pro Woche</strong> - nur wenn es "
+#~ "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 "
+#~ "Spalte."
+
+#~ 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"
+#~ " "
+#~ 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"
+
+#~ 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?"
+
+#~ msgid "with openid it is easier"
+#~ msgstr "Mit OpenID müssen Sie keinen neuen Account anlegen."
+
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "Sie können sich ohne Bedenken mit dem selben OpenID-Zugang auf unbegrenzt "
+#~ "vielen Webseiten einloggen."
+
+#~ msgid "openid is widely adopted"
+#~ msgstr ""
+#~ "Es gibt mehr als 160 Millionen OpenID-Zugänge und mehr als 10.000 Seiten, "
+#~ "die OpenID akzeptieren."
+
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID basiert auf einem international anerkannten Standard und wird von "
+#~ "zahlreichen großen Firmen unterstützt."
+
+#~ msgid "Find out more"
+#~ msgstr "Mehr Informationen"
+
+#~ 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 "
+#~ "Benutzernamen und ein Passwort hier im Forum anmelden. Wir unterstützen "
+#~ "aber auch <strong>OpenID</strong>, eine Technik, mit der Sie sich nur "
+#~ "einmal z.B. bei Ihrem Internet-Provider registrieren müssen. Mit der bei "
+#~ "Ihrem Provider angelegten OpenID können Sie sich dann hier einloggen. "
+#~ "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)"
+
+#, 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."
@@ -4013,12 +4571,6 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "Ãœberarbeitung speichern"
-#~ msgid "Cancel"
-#~ msgstr "Abbrechen"
-
-#~ msgid "hide preview"
-#~ msgstr "Vorschau ausblenden"
-
#~ msgid "show preview"
#~ msgstr "Vorschau einblenden"
@@ -4051,8 +4603,8 @@ 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"
+#~ "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"
@@ -4168,8 +4720,8 @@ 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 "
+#~ "- 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 "
@@ -4316,10 +4868,6 @@ msgstr ""
#~ "zu hören.\n"
#~ "Bitte geben Sie hier Ihre Nachricht ein."
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein"
-
#~ msgid "(this field is required)"
#~ msgstr "(Pflichtfeld)"
@@ -4327,14 +4875,6 @@ msgstr ""
#~ msgstr "Feedback absenden"
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Hello, this is a %(site_title)s forum feedback message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Hallo, dies ist Feedback zu %(site_title)s \n"
-
-#, fuzzy
#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
#~ msgstr ""
#~ "Sincerely,\n"
@@ -4345,27 +4885,24 @@ msgstr ""
#~ msgstr "Diese Frage wieder eröffnen"
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "Auszeichnungen"
-
-#~ msgid "previous"
-#~ msgstr "Vorige"
-
-#~ msgid "current page"
-#~ msgstr "aktuelle Seite"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "Seite %(num)s"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr ""
+#~ "Ich halte diesen Beitrag für hilfreich (Zum Abbrechen erneut klicken)"
-#~ msgid "next page"
-#~ msgstr "Nächste Seite"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr ""
+#~ "Ich halte diese Antwort für hilfreich (zum Abbrechen erneut klicken)"
-#~ msgid "posts per page"
-#~ msgstr "Beiträge pro Seite"
+#~ msgid "current number of votes"
+#~ msgstr "Aktuelle Anzahl Bewertungen"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "Punkte-Logbuch von %(user_name)s"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "Ich halte nichts von diesem Beitrag (Zum Abbrechen erneut klicken)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr ""
+#~ "Ich halte diese Antwort für nicht hilfreich (zum Abbrechen erneut klicken)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4389,9 +4926,6 @@ msgstr ""
#~ msgid "delete this comment"
#~ msgstr "Kommentar löschen"
-#~ msgid "edit"
-#~ msgstr "bearbeiten"
-
#~ msgid "add comment"
#~ msgstr "Kommentar hinzufügen"
@@ -4410,24 +4944,43 @@ msgstr ""
#~ msgstr[1] "<strong>%(counter)s</strong> weitere Kommentare"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "Dieses Feld wird benötigt"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "Punkte-Logbuch von %(user_name)s"
-#~ msgid "(required)"
-#~ msgstr "(Pflichtfeld)"
+#~ msgid "previous"
+#~ msgstr "Vorige"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Die Markdown-Echtzeit-Vorschau ein- oder ausblenden"
+#~ 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"
@@ -4441,243 +4994,6 @@ msgstr ""
#~ msgid "Privacy policy"
#~ msgstr "Datenschutzrichtlinien"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr ""
-#~ "Ich halte diesen Beitrag für hilfreich (Zum Abbrechen erneut klicken)"
-
-#~ msgid "current number of votes"
-#~ msgstr "Aktuelle Anzahl Bewertungen"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "Ich halte nichts von diesem Beitrag (Zum Abbrechen erneut klicken)"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "Tags verändert"
-
-#~ msgid "reopen"
-#~ msgstr "wieder öffnen"
-
-#~ msgid "close"
-#~ msgstr "schließen"
-
-#~ 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"
-
-#~ msgid "delete"
-#~ msgstr "löschen"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" 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 ""
-#~ "\n"
-#~ " %(counter)s Answer:\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers:\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "Eine Antwort:"
-#~ msgstr[1] ""
-#~ "\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 "i like this answer (click again to cancel)"
-#~ msgstr ""
-#~ "Ich halte diese Antwort für hilfreich (zum Abbrechen erneut klicken)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr ""
-#~ "Ich halte diese Antwort für nicht hilfreich (zum Abbrechen erneut klicken)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "Zur Favoritenliste hinzufügen (zum Abbrechen erneut klicken)"
-
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "Der Fragesteller hat diese Antwort als die korrekte markiert"
-
-#~ msgid "answer permanent link"
-#~ msgstr "Link zur Antwort"
-
-#~ msgid "permanent link"
-#~ msgstr "Link"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Frage beantworten"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "oder"
-
-#~ msgid "email"
-#~ msgstr "E-Mail"
-
-#~ 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 ""
-#~ "<strong>Benachrichtigung bei neuen Antworten</strong> einmal wöchentlich "
-#~ "per E-Mail"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "(Sie können die Frequenz der Benachrichtigungen jederzeit in Ihrem "
-#~ "<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 "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</"
-#~ "span> - Ihre Antwort wird gespeichert, während Sie sich danach einloggen "
-#~ "oder einen neuen Zugang anlegen. Bitte versuchen Sie, eine "
-#~ "<strong>sachliche Antwort mit Substanz</strong> zu verfassen. Für "
-#~ "Rückfragen oder Klarstellungen nutzen Sie bitte die Kommentarfunktion "
-#~ "unter der Frage. Nachdem Sie sich angemeldet und/oder eingeloggt haben, "
-#~ "können Sie auch über die Qualität der Frage abstimmen, vergessen Sie das "
-#~ "nicht!"
-
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr ""
-#~ "<span class='big strong'>Die eigene Frage zu beantworten ist ausdrücklich "
-#~ "erlaubt</span>, aber es muß eine echte <strong>Antwort</strong> sein! "
-#~ "Vergessen Sie nicht, daß Sie Ihre ursprüngliche Frage <strong>jederzeit "
-#~ "verändern oder bei Bedarf auch wieder löschen können</strong>. Bitte "
-#~ "verwenden Sie die <strong>Kommentarfunktion</strong> für Diskussionen "
-#~ "und Rückfragen, und bitte vergessen Sie nicht, die eingehenden Antworten "
-#~ "mit Ihrer Stimme zu bewerten!"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr ""
-#~ "Bitte verfassen Sie eine <strong>sachliche Antwort mit Substanz</strong>. "
-#~ "Um einen <strong>Kommentar</strong> zu verfassen, nutzen Sie bitte die "
-#~ "Kommentarfunktion unter jeder Frage und Antwort. Sie können Ihre Antwort "
-#~ "jederzeit <strong>bearbeiten</strong> - es ist normalerweise nicht nötig, "
-#~ "eine Frage doppelt zu beantworten. Vergessen Sie auch nicht, über die "
-#~ "Frage und andere Antworten <strong>abzustimmen</strong> - dies hilft, die "
-#~ "besten Fragen und Antworten herauszufinden!"
-
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr ""
-#~ "Bitte loggen Sie sich ein oder registrieren Sie sich, um die Antwort "
-#~ "endgültig zu speichern."
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Eigene Frage beantworten"
-
-#~ msgid "Answer the question"
-#~ msgstr "Frage beantworten"
-
-#, 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 tags"
-#~ msgstr "Tags"
-
-#~ 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 "Edit question"
#~ msgstr "Frage bearbeiten"
@@ -4735,9 +5051,17 @@ msgstr ""
#~ 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"
@@ -4771,627 +5095,255 @@ msgstr ""
#~ msgid "Nothing found."
#~ msgstr "Nichts gefunden."
-#~ msgid "Change email"
-#~ msgstr "E-Mail-Adresse ändern"
-
-#~ msgid "Save your email address"
-#~ msgstr "E-Mail-Adresse speichern"
-
-#~ msgid "change %(email)s info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Geben Sie Ihre E-Mail-Adresse in untenstehende "
-#~ "Box ein</span> falls Sie sie für Ihre Benachrichtigungs-E-Mails ändern "
-#~ "möchten.<br>Im Moment verwenden Sie <strong>%(email)s</strong>"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<span class='strong big'>Bitte geben Sie unten Ihre E-Mail-Adresse ein.</"
-#~ "span> Eine gültige E-Mail-Adresse wird für dieses Forum benötigt. Falls "
-#~ "Sie möchten, können Sie <strong>Benachrichtigungsmails</strong> zu Sie "
-#~ "besonders interessierenden Fragen, oder Neuzugängen abonnieren. Ihre E-"
-#~ "Mail-Adresse wird auch benutzt, um ein individuelles sogenanntes <a "
-#~ "href='%(gravatar_faq_url)s'><strong>Gravatar</strong></a>-Bild für Ihr "
-#~ "Konto anzuzeigen. E-Mail-Adressen werden niemals öffentlich angezeigt."
-
-#~ msgid "Your new Email"
-#~ 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 "with %(author_name)s's contributions"
+#~ msgstr "mit Beiträgen von %(author_name)s"
-#~ msgid "Validate email"
-#~ msgstr "E-Mail-Adresse überprüfen"
+#~ msgid "Search tips:"
+#~ msgstr "Suchtipps:"
-#~ 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 "
-#~ "an %(email)s versandt.</span> Bitte <strong>klicken Sie auf den Link in "
-#~ "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 "reset author"
+#~ msgstr "Autor zurücksetzen"
-#~ msgid "Email not changed"
-#~ msgstr "E-Mail-Adresse nicht geändert"
+#, fuzzy
+#~ msgid " or "
+#~ msgstr "oder"
-#~ 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 "reset tags"
+#~ msgstr "Tags zurücksetzen"
-#~ msgid "Email changed"
-#~ msgstr "E-Mail-Adresse geändert"
+#~ msgid "start over"
+#~ msgstr "Von vorn beginnen"
-#~ msgid "your current %(email)s can be used for this"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
#~ msgstr ""
-#~ "<span class='big strong'>Ihre E-Mail-Adresse wurde auf %(email)s "
-#~ "verändert.</span> Sie erhalten alle eventuell abonnierten E-Mail-"
-#~ "Benachrichtigungen nun an diese Adresse."
+#~ "- um den Kontext zu erweitern, oder graben Sie sich ein, indem Sie "
+#~ "weitere Tags hinzufügen und die Suchabfrage überarbeiten."
-#~ msgid "Email verified"
-#~ msgstr "E-Mail-Adresse bestätigt"
+#~ msgid "Search tip:"
+#~ msgstr "Suchtipp:"
-#~ msgid "thanks for verifying email"
+#~ msgid "add tags and a query to focus your search"
#~ msgstr ""
-#~ "<span class=\"big strong\">Vielen Dank für die Bestätigung Ihrer E-Mail-"
-#~ "Adresse!</span> Sie können jetzt <strong>Fragen stellen</strong> und "
-#~ "<strong>beantworten</strong>. Sie können bei interessanten Fragen auch "
-#~ "<strong>eine E-Mail-Benachrichtigung abonnieren</strong>, die Sie einmal "
-#~ "täglich oder seltener über neue Entwicklungen wie Antworten und "
-#~ "Kommentare informiert."
-
-#~ msgid "email key not sent"
-#~ msgstr "Bestätigungs-E-Mail nicht versandt"
+#~ "Tags und eine Suchabfrage hinzufügen, um genauere Suchergebnisse zu "
+#~ "erzielen"
-#~ 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>."
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "Es gibt hier keine unbeantworteten Fragen"
#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Registrieren"
-
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">Sie sind zum ersten Mal mit Ihrem OpenID-"
-#~ "Zugang von %(provider)s eingeloggt.</span> Bitte geben Sie einen "
-#~ "<strong>Benutzernamen</strong> ein 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>"
+#~ msgid "No questions here. "
+#~ msgstr "Keine Favoriten-Fragen."
#, fuzzy
-#~ 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'>Der Benutzername %(username)s ist leider "
-#~ "nicht mehr frei.</span></p><p> Eine gültige E-Mail-Adresse ist ebenfalls "
-#~ "erforderlich - an sie senden wir (optionale) Benachrichtigungsmails, und "
-#~ "mit ihr zeigen wir Ihr Benutzerbild (Gravatar) an. E-Mail-Adressen werden "
-#~ "nicht öffentlich angezeigt und auch nicht an Dritte weitergegeben.</p>"
-
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">Sie sind zum ersten Mal mit Ihrem OpenID-"
-#~ "Zugang von %(provider)s eingeloggt.</span> Sie können einen "
-#~ "<strong>Benutzernamen</strong> eingeben oder Ihren Benutzernamen bei %"
-#~ "(provider)s verwenden. Bitte hinterlegen Sie auch 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>"
-
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">Sie sind hier zum ersten Mal mit Ihrem "
-#~ "Facebook-Login.</span> Bitte legen Sie einen <strong>Benutzernamen</"
-#~ "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>"
-
-#~ msgid "This account already exists, please use another."
+#~ msgid "Please follow some questions or follow some users."
#~ msgstr ""
-#~ "Dieser Benutzername existiert leider bereits, bitte wählen Sie einen "
-#~ "anderen."
-
-#~ msgid "Screen name label"
-#~ msgstr "<strong>Benutzername</strong> (<i>wird öffentlich angezeigt</i>)"
-
-#~ msgid "Email address label"
-#~ msgstr ""
-#~ "<strong>E-Mail-Adresse</strong> (<i>wird <strong>nicht</strong> "
-#~ "öffentlich angezeigt; muß gültig sein</i>)"
-
-#~ msgid "receive updates motivational blurb"
-#~ msgstr ""
-#~ "<strong>Benachrichtigungen per E-Mail abonnieren</strong> Das Abonnieren "
-#~ "von E-Mail-Benachrichtigungen ist freiwillig. <br/>Das Forum versenden "
-#~ "bis zu <strong>einer Benachrichtigung pro Woche</strong> - nur wenn es "
-#~ "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 "
-#~ "Spalte."
-
-#~ msgid "create account"
-#~ msgstr "Zugang anlegen"
-
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "Vielen Dank für Ihre Registrierung!"
-
-#~ msgid "Your account details are:"
-#~ msgstr "Ihre Zugangsdaten:"
-
-#~ msgid "Username:"
-#~ msgstr "Benutzername:"
+#~ "Bitte fügen Sie Fragen, die Ihnen besonders gut gefallen, zu Ihrer "
+#~ "Favoritenliste hinzu."
-#~ msgid "Password:"
-#~ msgstr "Passwort:"
+#~ msgid "You can expand your search by "
+#~ msgstr "Sie können Ihre Suche erweitern, indem Sie"
-#~ msgid "Please sign in here:"
-#~ msgstr "Bitte hier anmelden:"
+#~ msgid "resetting author"
+#~ msgstr "die Autorenbeschränkung entfernen"
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr "Ihr Forumsteam"
+#~ msgid "resetting tags"
+#~ msgstr "die Tag-Beschränkung entfernen"
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Grüße vom Forumsteam"
+#~ msgid "starting over"
+#~ msgstr "ganz von Vorne beginnen"
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr "Um das Forum zu benutzen, klicken Sie auf untenstehenden Link:"
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "Sie können jederzeit gern Ihre eigene Frage stellen!"
-#~ 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."
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "Sie haben nicht gefunden, wonach Sie gesucht haben?"
-#~ 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 ""
-#~ "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 "Please, post your question!"
+#~ msgstr "Bitte stellen Sie Ihre Frage!"
-#~ msgid "Logout"
-#~ msgstr "Logout"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "Fragen-RSS-Feed abonnieren"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "Bitte wählen Sie eine der oben genannten Optionen"
+#~ 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 "Sign in"
-#~ msgstr "einloggen/"
+#~ 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"
-#~ msgid "User login"
-#~ msgstr "Benutzerlogin"
+#, 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"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
+#~ " %(counter)s Answer\n"
#~ " "
-#~ msgstr ""
+#~ msgid_plural ""
#~ "\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"
+#~ " %(counter)s Answers\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>"
-
-#, 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"
+#~ msgstr[0] ""
+#~ "\n"
+#~ "Eine Antwort:"
+#~ msgstr[1] ""
+#~ "\n"
+#~ "%(counter)s Antworten:"
-#~ msgid "Login"
-#~ msgstr "Login"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "Älteste Antworten werden als Erstes angezeigt"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Neues Passwort angelegt"
+#~ msgid "oldest answers"
+#~ msgstr "älteste"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "Bitte geben Sie Ihr Passwort erneut ein"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "Neueste werden zuerst angezeigt"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "Zuletzt gesehen"
+#~ msgid "newest answers"
+#~ msgstr "Neueste Antworten"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Zugang gelöscht."
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "Höchstbewertete werden zuerst angezeigt"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Sie haben noch Fragen?"
+#~ msgid "popular answers"
+#~ msgstr "Höchstbewertet"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Legen Sie ein neues Passwort für Ihren Zugang fest."
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Eigene Frage beantworten"
#, 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?"
+#~ msgid "Login/Signup to Answer"
+#~ msgstr ""
+#~ "Bitte loggen Sie sich ein oder registrieren Sie sich, um die Antwort "
+#~ "endgültig zu speichern."
-#~ msgid "with openid it is easier"
-#~ msgstr "Mit OpenID müssen Sie keinen neuen Account anlegen."
+#~ msgid "Your answer"
+#~ msgstr "Ihre Antwort"
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "Sie können sich ohne Bedenken mit dem selben OpenID-Zugang auf unbegrenzt "
-#~ "vielen Webseiten einloggen."
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Verfassen Sie die erste Antwort auf diese Frage!"
-#~ msgid "openid is widely adopted"
+#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
-#~ "Es gibt mehr als 160 Millionen OpenID-Zugänge und mehr als 10.000 Seiten, "
-#~ "die OpenID akzeptieren."
+#~ "<span class='strong big'>Beginnen Sie Ihre Antwort als anonymer Gast</"
+#~ "span> - Ihre Antwort wird gespeichert, während Sie sich danach einloggen "
+#~ "oder einen neuen Zugang anlegen. Bitte versuchen Sie, eine "
+#~ "<strong>sachliche Antwort mit Substanz</strong> zu verfassen. Für "
+#~ "Rückfragen oder Klarstellungen nutzen Sie bitte die Kommentarfunktion "
+#~ "unter der Frage. Nachdem Sie sich angemeldet und/oder eingeloggt haben, "
+#~ "können Sie auch über die Qualität der Frage abstimmen, vergessen Sie das "
+#~ "nicht!"
-#~ msgid "openid is supported open standard"
+#~ msgid "answer your own question only to give an answer"
#~ msgstr ""
-#~ "OpenID basiert auf einem international anerkannten Standard und wird von "
-#~ "zahlreichen großen Firmen unterstützt."
-
-#~ msgid "Find out more"
-#~ msgstr "Mehr Informationen"
-
-#~ 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"
+#~ "<span class='big strong'>Die eigene Frage zu beantworten ist ausdrücklich "
+#~ "erlaubt</span>, aber es muß eine echte <strong>Antwort</strong> sein! "
+#~ "Vergessen Sie nicht, daß Sie Ihre ursprüngliche Frage <strong>jederzeit "
+#~ "verändern oder bei Bedarf auch wieder löschen können</strong>. Bitte "
+#~ "verwenden Sie die <strong>Kommentarfunktion</strong> für Diskussionen "
+#~ "und Rückfragen, und bitte vergessen Sie nicht, die eingehenden Antworten "
+#~ "mit Ihrer Stimme zu bewerten!"
-#~ msgid "Traditional signup info"
+#~ msgid "please only give an answer, no discussions"
#~ msgstr ""
-#~ "<span class='strong big'>Falls Sie möchten, können Sie auch einen "
-#~ "Benutzernamen und ein Passwort hier im Forum anmelden. Wir unterstützen "
-#~ "aber auch <strong>OpenID</strong>, eine Technik, mit der Sie sich nur "
-#~ "einmal z.B. bei Ihrem Internet-Provider registrieren müssen. Mit der bei "
-#~ "Ihrem Provider angelegten OpenID können Sie sich dann hier einloggen. "
-#~ "Wenn Sie z.B. einen Zugang bei Google haben, haben Sie bereits auch einen "
-#~ "OpenID-Zugang."
+#~ "Bitte verfassen Sie eine <strong>sachliche Antwort mit Substanz</strong>. "
+#~ "Um einen <strong>Kommentar</strong> zu verfassen, nutzen Sie bitte die "
+#~ "Kommentarfunktion unter jeder Frage und Antwort. Sie können Ihre Antwort "
+#~ "jederzeit <strong>bearbeiten</strong> - es ist normalerweise nicht nötig, "
+#~ "eine Frage doppelt zu beantworten. Vergessen Sie auch nicht, über die "
+#~ "Frage und andere Antworten <strong>abzustimmen</strong> - dies hilft, die "
+#~ "besten Fragen und Antworten herauszufinden!"
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
+#~ msgid "Login/Signup to Post Your Answer"
#~ msgstr ""
-#~ "Bitte geben Sie zum Schutz vor Spam die untenstehenden zwei Wörter ein."
-
-#~ msgid "Create Account"
-#~ msgstr "Zugang anlegen"
-
-#~ msgid "or"
-#~ msgstr "oder"
+#~ "Bitte loggen Sie sich ein oder registrieren Sie sich, um die Antwort "
+#~ "endgültig zu speichern."
-#~ msgid "return to OpenID login"
-#~ msgstr "zum OpenID-Login zurückkehren"
+#~ msgid "Answer the question"
+#~ msgstr "Frage beantworten"
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Wie verändert man sein Profilbild (Avatar) und was ist Gravatar?"
+#~ msgid " or"
+#~ msgstr "oder"
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Tags ändern"
+#~ msgid "email"
+#~ msgstr "E-Mail"
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Ihre Zugangsdaten:"
+#~ msgid "Question tools"
+#~ msgstr "Tags"
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Veränderungen gespeichert"
+#~ msgid "click to unfollow this question"
+#~ msgstr "Fragen mit den meisten Antworten"
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
+#~ msgid "click to follow this question"
+#~ msgstr "Fragen mit den meisten Antworten"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "Antwort gelöscht"
+#~ msgid "email the updates"
+#~ msgstr "E-Mail-Benachrichtigungen abgestellt"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "Antwort gelöscht"
-
-#~ 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"
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "Fragen-RSS-Feed abonnieren"
#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*kursiv* oder __kursiv__"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**fett** oder __fett__"
-
-#~ msgid "link"
-#~ msgstr "Link"
+#~ msgid "subsribe to rss feed"
+#~ msgstr "Fragen-RSS-Feed abonnieren"
-#~ msgid "text"
-#~ msgstr "Text"
+#~ msgid "question asked"
+#~ msgstr "Gefragt"
-#~ msgid "image"
-#~ msgstr "Bild"
+#~ msgid "question was seen"
+#~ msgstr "Frage betrachtet:"
-#~ msgid "numbered list:"
-#~ msgstr "Nummerierte Liste:"
+#~ msgid "times"
+#~ msgstr "mal"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "Grundlegende HTML-Tags werden ebenfalls unterstützt."
+#~ msgid "last updated"
+#~ msgstr "Zuletzt aktualisiert"
-#~ msgid "learn more about Markdown"
-#~ msgstr "Mehr Informationen über Markdown"
+#~ msgid "Related questions"
+#~ msgstr "Verwandte / ähnliche Fragen"
-#~ msgid "login to post question info"
+#~ msgid "Notify me once a day when there are any new answers"
#~ 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."
+#~ "<strong>Benachrichtigung bei neuen Antworten</strong> einmal täglich per "
+#~ "E-Mail"
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#~ msgid "Notify me weekly when there are any new answers"
#~ msgstr ""
-#~ "<span class='strong big'>Ihre E-Mail-Adresse %(email)s wurde noch nicht "
-#~ "bestätigt.</span> Um Beiträge veröffentlichen zu können, müssen Sie Ihre "
-#~ "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 "Bitte einloggen, um Frage zu veröffentlichen"
-
-#~ msgid "Ask your question"
-#~ msgstr "Stellen Sie Ihre Frage"
-
-#, 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"
-
-#~ 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 "questions"
-#~ msgstr "Fragen"
-
-#~ msgid "users"
-#~ msgstr "Benutzer"
-
-#~ msgid "badges"
-#~ msgstr "Auszeichnungen"
-
-#~ msgid "ask a question"
-#~ msgstr "Frage stellen"
-
-#~ msgid "logout"
-#~ msgstr "Ausloggen"
-
-#~ msgid "login"
-#~ msgstr "Einloggen"
-
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "die Tag-Beschränkung entfernen"
-
-#~ msgid "search"
-#~ msgstr "Suche"
-
-#~ 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."
-
-#~ msgid "Interesting tags"
-#~ msgstr "Tags, die mich interessieren"
-
-#~ msgid "Add"
-#~ msgstr "Hinzufügen"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Ignorierte Tags"
-
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "E-Mail-Tag-Filter festlegen"
-
-#~ 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"
-
-#~ 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"
+#~ "<strong>Benachrichtigung bei neuen Antworten</strong> einmal wöchentlich "
+#~ "per E-Mail"
#, 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."
+#~ msgid "Notify me immediately when there are any new answers"
#~ 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:"
+#~ "<strong>Benachrichtigung bei neuen Antworten</strong> einmal wöchentlich "
+#~ "per E-Mail"
-#~ msgid "add tags and a query to focus your search"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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."
+#~ "(Sie können die Frequenz der Benachrichtigungen jederzeit in Ihrem "
+#~ "<strong><a href='%(profile_url)s?sort=email_subscriptions'>Profil</a></"
+#~ "strong> ändern)"
-#, fuzzy
-#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
#~ 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 "Contributors"
-#~ msgstr "Beitragende"
-
-#~ msgid "Related tags"
-#~ msgstr "Tags"
-
-#~ msgid "In:"
-#~ msgstr "In:"
-
-#~ msgid "see unanswered questions"
-#~ msgstr "Unbeantwortete Fragen anzeigen"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "Favoritenliste anzeigen"
-
-#~ msgid "Sort by:"
-#~ msgstr "Sortieren nach:"
+#~ "<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"
@@ -5442,6 +5394,10 @@ msgstr ""
#~ msgstr "Fragen"
#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr "Bitte %(tag_count)d Tags oder weniger benutzen"
+
+#, fuzzy
#~ msgid "select:"
#~ msgstr "löschen"
@@ -5468,6 +5424,10 @@ msgstr ""
#~ msgid "update profile"
#~ msgstr "Profil aktualisieren"
+#, fuzzy
+#~ msgid "manage login methods"
+#~ msgstr "Bitte einloggen"
+
#~ msgid "real name"
#~ msgstr "Realname"
@@ -5500,6 +5460,14 @@ msgstr ""
#~ 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"
@@ -5507,6 +5475,13 @@ msgstr ""
#~ 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/"
@@ -5619,6 +5594,226 @@ msgstr ""
#~ 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"
+#~ " "
+#~ msgstr ""
+#~ "<span class='strong big'>Ihre E-Mail-Adresse %(email)s wurde noch nicht "
+#~ "bestätigt.</span> Um Beiträge veröffentlichen zu können, müssen Sie Ihre "
+#~ "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 "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"
+
+#, fuzzy
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "Antwort"
+#~ msgstr[1] "Antwort"
+
+#, fuzzy
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "abstimmen/"
+#~ msgstr[1] "abstimmen/"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "Unbeantwortete Fragen anzeigen"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "Favoritenliste anzeigen"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "Auszeichnungen"
+
+#~ msgid "logout"
+#~ msgstr "Ausloggen"
+
+#~ msgid "login"
+#~ msgstr "Einloggen"
+
+#, fuzzy
+#~ msgid "settings"
+#~ msgstr "die Tag-Beschränkung entfernen"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr ""
+#~ "Ich halte diesen Beitrag für hilfreich (Zum Abbrechen erneut klicken)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "Ich halte nichts von diesem Beitrag (Zum Abbrechen erneut klicken)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr ""
+#~ "Die Frage wurde aus den folgenden Gründen: \"%(close_reason)s\" "
+#~ "geschlossen von"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " %(counter)s Answer:\n"
+#~ " "
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers:\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "\n"
+#~ "Eine Antwort:"
+#~ msgstr[1] ""
+#~ "\n"
+#~ "%(counter)s Antworten:"
+
+#~ msgid "mark this answer as favorite (click again to undo)"
+#~ msgstr "Zur Favoritenliste hinzufügen (zum Abbrechen erneut klicken)"
+
+#~ msgid "Question tags"
+#~ msgstr "Tags"
+
+#~ msgid "questions"
+#~ msgstr "Fragen"
+
+#~ msgid "search"
+#~ msgstr "Suche"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr ""
+#~ "Bitte fügen Sie Fragen, die Ihnen besonders gut gefallen, zu Ihrer "
+#~ "Favoritenliste hinzu."
+
+#~ msgid "In:"
+#~ msgstr "In:"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "Alle Fragen"
+
+#~ msgid "Sort by:"
+#~ msgstr "Sortieren nach:"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "Ihre E-Mail-Adresse (wird nicht angezeigt):"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "Titel"
+
+#, fuzzy
+#~ msgid "Setting groups"
+#~ msgstr "die Tag-Beschränkung entfernen"
+
#~ msgid "community wiki"
#~ msgstr "Community Wiki"
@@ -6339,9 +6534,6 @@ msgstr ""
#~ "Benutzerprofil ablegen. Diese Daten werden nicht ohne die ausdrückliche "
#~ "Zustimmung des Nutzers öffentlich angezeigt."
-#~ msgid "Other Services"
-#~ msgstr "Andere Dienste"
-
#~ msgid "details on sharing data with third parties"
#~ msgstr ""
#~ "Keine Daten, die nicht mit Zustimmung des Benutzers öffentlich auf der "
@@ -6461,8 +6653,8 @@ msgstr ""
#~ msgstr "Klassische Login-Information"
#~ msgid ""
-#~ "how to login with password through external login website or use %"
-#~ "(feedback_url)s"
+#~ "how to login with password through external login website or use "
+#~ "%(feedback_url)s"
#~ msgstr ""
#~ "Mit Passwort durch externen Login einloggen oder %(feedback_url)s benutzen"
@@ -6500,8 +6692,8 @@ msgstr ""
#~ "Um Ihr Passwort zu ändern, tun Sie bitte folgendes:\n"
#~ "\n"
#~ "* Öffnen Sie diesen Link: %(key_link)s\n"
-#~ "* Loggen Sie sich mit dem Benutzernamen %(username)s und dem Passwort %"
-#~ "(password)s ein\n"
+#~ "* Loggen Sie sich mit dem Benutzernamen %(username)s und dem Passwort "
+#~ "%(password)s ein\n"
#~ "* Öffnen Sie Ihr Benutzerprofil und ändern Sie Ihr Passwort"
#~ msgid "Click to sign in through any of these services."
@@ -6619,8 +6811,8 @@ msgstr ""
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " see <strong>%"
-#~ "(counter)s</strong> more\n"
+#~ " see <strong>"
+#~ "%(counter)s</strong> more\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -6636,8 +6828,8 @@ msgstr ""
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " see <strong>%"
-#~ "(counter)s</strong> more comments\n"
+#~ " see <strong>"
+#~ "%(counter)s</strong> more comments\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
diff --git a/askbot/locale/de/LC_MESSAGES/djangojs.mo b/askbot/locale/de/LC_MESSAGES/djangojs.mo
index 7e87fdc8..ef480e40 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 4fdeb3e9..ed5cd459 100644
--- a/askbot/locale/de/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/de/LC_MESSAGES/djangojs.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-08 02:24-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-11-27 01:58-0600\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"
"MIME-Version: 1.0\n"
@@ -17,49 +17,326 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+msgstr ""
+
+#: skins/common/media/js/post.js:28
+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
+msgid "insufficient privilege"
+msgstr "nicht genügend Rechte"
+
+#: skins/common/media/js/post.js:283
+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
+msgid "please login"
+msgstr "Bitte einloggen"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "Gastbenutzer können nicht abstimmen "
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "Bitte beleidigenden/regelwidrigen Beitrag bestätigen"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr "Gastbenutzer können Beiträge nicht melden"
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "Löschen bestätigen"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "Gastbenutzer können Beiträge nicht löschen oder wiederherstellen"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "Beitrag wiederhergestellt"
+
+#: skins/common/media/js/post.js:299
+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/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr "OK"
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr "Fett"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "Kursiv"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "Link"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "Zitat"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "Vorformatierter Text"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "Bild"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "Nummerierte Liste"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "Liste"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "Titel"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "horizontaler Balken"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "Rückgängig"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "Wiederholen"
+
+#: skins/common/media/js/wmd/wmd.js:53
+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
+msgid "enter url"
+msgstr "URL eingeben, zum Beispiel <br />http://www.askbot.org/ </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 ""
+
+#: 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/en/LC_MESSAGES/django.mo b/askbot/locale/en/LC_MESSAGES/django.mo
index 1f065123..c174d438 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 cab0a4ba..fa195b09 100644
--- a/askbot/locale/en/LC_MESSAGES/django.po
+++ b/askbot/locale/en/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-17 17:24-0500\n"
+"POT-Creation-Date: 2011-11-27 02:28-0600\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"Plural-Forms: nplurals=2; plural=n!= 1;\n"
#: exceptions.py:13
@@ -45,10 +45,7 @@ msgstr ""
msgid "Country field is required"
msgstr ""
-#: forms.py:104 skins/default/templates/blocks/answer_edit_tips.html:43
-#: skins/default/templates/blocks/answer_edit_tips.html:47
-#: skins/default/templates/blocks/question_edit_tips.html:38
-#: skins/default/templates/blocks/question_edit_tips.html:43
+#: forms.py:104
msgid "title"
msgstr ""
@@ -68,9 +65,7 @@ msgstr ""
msgid "question content must be > 10 characters"
msgstr ""
-#: forms.py:134 skins/default/templates/macros.html:660
-#: skins/default/templates/macros.html:672
-#: skins/default/templates/blocks/header.html:25
+#: forms.py:134
msgid "tags"
msgstr ""
@@ -79,7 +74,7 @@ msgid ""
"Tags are short keywords, with no spaces within. Up to five tags can be used."
msgstr ""
-#: forms.py:164 skins/default/templates/question_retag.html:58
+#: forms.py:164
msgid "tags are required"
msgstr ""
@@ -130,19 +125,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr ""
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -150,7 +145,7 @@ msgstr ""
msgid "administrator"
msgstr ""
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr ""
@@ -194,446 +189,485 @@ msgid "Message text"
msgstr ""
#: forms.py:542
-msgid "Your name:"
+msgid "Your name (optional):"
msgstr ""
#: forms.py:543
-msgid "Email (not shared with anyone):"
+#, fuzzy
+msgid "Email:"
msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr ""
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr ""
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
msgid "this email will be linked to gravatar"
msgstr ""
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr ""
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr ""
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr ""
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr ""
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr ""
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr ""
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr ""
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr ""
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr ""
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr ""
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr ""
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr ""
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr ""
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr ""
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr ""
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr ""
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr ""
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr ""
-#: 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
-#: skins/default/templates/question.html:508
+#: 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/"
msgstr ""
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr ""
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr ""
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr ""
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr ""
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr ""
-#: urls.py:108 skins/default/templates/question.html:508
+#: urls.py:112
msgid "vote/"
msgstr ""
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr ""
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
-#: skins/default/templates/main_page/javascript.html:38
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr ""
-#: urls.py:210
+#: urls.py:214
msgid "subscriptions/"
msgstr ""
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr ""
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr ""
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr ""
-#: urls.py:296 skins/default/templates/question.html:506
-#: skins/default/templates/main_page/javascript.html:37
+#: urls.py:300
msgid "question/"
msgstr ""
-#: urls.py:303 setup_templates/settings.py:203
-#: skins/default/templates/authopenid/providers_javascript.html:7
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr ""
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "User login"
+
+#: 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:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr ""
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr ""
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr ""
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr ""
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr ""
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr ""
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
msgid "Default notification frequency questions asked by the user"
msgstr ""
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -643,61 +677,61 @@ 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:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -705,11 +739,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -717,130 +751,130 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
msgstr ""
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
#, fuzzy
msgid "Allow posting before logging in"
msgstr ""
@@ -850,7 +884,7 @@ 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/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 "
@@ -858,222 +892,222 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Post Your Answer"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr ""
-#: conf/license.py:12
-msgid "License settings"
+#: conf/license.py:13
+msgid "Content LicensContent License"
msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
msgid "License homepage"
msgstr ""
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1081,43 +1115,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1126,11 +1160,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1140,160 +1174,160 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr ""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr ""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Post Your Answer"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
msgid "Accept own answer"
msgstr ""
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr ""
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr ""
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr ""
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr ""
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr ""
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr ""
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr ""
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr ""
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr ""
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr ""
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1301,44 +1335,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1346,49 +1380,51 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "User login"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tags"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
msgstr ""
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
-#: conf/site_modes.py:63
-msgid "Site modes"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1396,51 +1432,51 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr ""
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1553,33 +1589,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1587,40 +1623,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1632,11 +1668,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1645,21 +1681,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1668,21 +1704,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1691,19 +1727,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1714,73 +1750,93 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
msgstr ""
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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:12
#, fuzzy
msgid "User settings"
msgstr "User login"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr ""
@@ -1790,61 +1846,67 @@ 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/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr ""
@@ -1885,7 +1947,7 @@ msgstr ""
msgid "newest"
msgstr ""
-#: const/__init__.py:42 skins/default/templates/users.html:26
+#: const/__init__.py:42
msgid "oldest"
msgstr ""
@@ -1917,12 +1979,11 @@ msgstr ""
msgid "relevance"
msgstr ""
-#: const/__init__.py:57 skins/default/templates/main_page/tab_bar.html:10
-#: skins/default/templates/user_profile/user_inbox.html:50
+#: const/__init__.py:57
msgid "all"
msgstr ""
-#: const/__init__.py:58 skins/default/templates/main_page/tab_bar.html:15
+#: const/__init__.py:58
msgid "unanswered"
msgstr ""
@@ -1947,189 +2008,193 @@ msgstr ""
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr ""
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr ""
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "received badge"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:141
+#: const/__init__.py:142
msgid "reminder about unanswered questions sent"
msgstr ""
-#: const/__init__.py:143
+#: const/__init__.py:146
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "answered question"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "commented question"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr ""
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr ""
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr ""
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr ""
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr ""
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr ""
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr ""
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr ""
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279 skins/default/templates/badges.html:37
+#: const/__init__.py:284
msgid "gold"
msgstr ""
-#: const/__init__.py:280 skins/default/templates/badges.html:46
+#: const/__init__.py:285
msgid "silver"
msgstr ""
-#: const/__init__.py:281 skins/default/templates/badges.html:53
+#: const/__init__.py:286
msgid "bronze"
msgstr ""
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
#, fuzzy
msgid "Gravatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: const/__init__.py:295
+#: const/__init__.py:300
#, fuzzy
msgid "Uploaded Avatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
@@ -2253,7 +2318,7 @@ msgid "Incorrect username."
msgstr "sorry, there is no such user name"
#: 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:206
msgid "signin/"
msgstr ""
@@ -2291,7 +2356,6 @@ msgid "%(site)s user name and password"
msgstr ""
#: deps/django_authopenid/util.py:384
-#: skins/default/templates/authopenid/signin.html:108
msgid "Create a password-protected account"
msgstr ""
@@ -2378,73 +2442,73 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
msgstr ""
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2452,99 +2516,32 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, 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/default/templates/authopenid/signin.html:132
-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/group_settings.html:68
-msgid "Setting groups"
-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 ""
@@ -2572,15 +2569,15 @@ 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>"
+"<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>"
+"<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
@@ -2589,6 +2586,33 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for 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!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these 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!"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2641,99 +2665,115 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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>"
+"<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:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+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."
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:347
+#: models/__init__.py:353
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, 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"
msgstr "Sorry, you cannot vote for your own posts"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ">%(points)s points required to upvote "
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s points required to downvote "
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:417
+#: models/__init__.py:431
#, 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:436 models/__init__.py:503 models/__init__.py:918
+#: 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:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
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:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2744,56 +2784,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2803,266 +2843,257 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: 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:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr ""
"Sorry, since your account is blocked you cannot flag posts as offensive"
-#: models/__init__.py:749
+#: models/__init__.py:763
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."
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
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"
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
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."
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "sorry, but older votes cannot be revoked"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502 skins/default/templates/feedback_email.txt:9
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr ""
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, python-format
msgid "Question: \"%(title)s\""
msgstr ""
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr ""
-
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3325,52 +3356,62 @@ msgstr ""
msgid "Very active in one tag"
msgstr ""
-#: models/meta.py:112
+#: 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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
msgid "\" and more"
msgstr ""
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr ""
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr ""
@@ -3383,8 +3424,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3438,1033 +3479,403 @@ msgstr ""
msgid "No email"
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/blocks/footer.html:5
-#: skins/default/templates/blocks/header_meta_links.html:13
-#: skins/default/templates/blocks/question_edit_tips.html:15
-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/main_page/tab_bar.html:9
-#, 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"
+#: 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/default/templates/500.jinja.html:9
-msgid "please report the error to the site administrators if you wish"
+#: 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/500.jinja.html:12
-#, fuzzy
-msgid "see latest questions"
-msgstr "Post Your Answer"
-
-#: skins/default/templates/500.jinja.html:13
+#: skins/common/templates/authopenid/confirm_email.txt:5
+#: skins/old/templates/authopenid/confirm_email.txt:5
#, fuzzy
-msgid "see tags"
-msgstr "Tags"
-
-#: skins/default/templates/about.html:3 skins/default/templates/about.html:5
-#, python-format
-msgid "About %(site_name)s"
-msgstr ""
+msgid "Username:"
+msgstr "Choose screen name"
-#: skins/default/templates/answer_edit.html:4
-#: skins/default/templates/answer_edit.html:10
+#: skins/common/templates/authopenid/confirm_email.txt:6
+#: skins/old/templates/authopenid/confirm_email.txt:6
#, 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:21
-#: skins/default/templates/question_edit.html:27
-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
-msgid "Cancel"
-msgstr ""
-
-#: skins/default/templates/answer_edit.html:60
-#: skins/default/templates/answer_edit.html:63
-#: skins/default/templates/ask.html:46 skins/default/templates/ask.html:49
-#: 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
-msgid "hide preview"
-msgstr ""
-
-#: skins/default/templates/answer_edit.html:63
-#: skins/default/templates/ask.html:49
-#: skins/default/templates/question.html:579
-#: skins/default/templates/question_edit.html:75
-msgid "show preview"
-msgstr ""
+msgid "Password:"
+msgstr "Password"
-#: skins/default/templates/ask.html:4
+#: skins/common/templates/authopenid/confirm_email.txt:8
+#: skins/old/templates/authopenid/confirm_email.txt:8
#, fuzzy
-msgid "Ask a question"
-msgstr "Ask Your Question"
-
-#: skins/default/templates/badge.html:4 skins/default/templates/badge.html:8
-#: skins/default/templates/user_profile/user_recent.html:16
-#: skins/default/templates/user_profile/user_stats.html:110
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: skins/default/templates/badge.html:4
-msgid "Badge"
-msgstr ""
-
-#: skins/default/templates/badge.html:6
-#, python-format
-msgid "Badge \"%(name)s\""
-msgstr ""
-
-#: skins/default/templates/badge.html:8
-#: skins/default/templates/user_profile/user_recent.html:16
-#: skins/default/templates/user_profile/user_stats.html:108
-#, python-format
-msgid "%(description)s"
+msgid "Please sign in here:"
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/badge.html:13
-msgid "user received this badge:"
-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/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 "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
-#, 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"
-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
-msgid "Community badges"
-msgstr "Badge levels"
-
-#: skins/default/templates/badges.html:37
-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 "
-"profound knowledge and ability in addition to your active participation."
-
-#: skins/default/templates/badges.html:45
-msgid ""
-"silver badge: occasionally awarded for the very high quality contributions"
-msgstr ""
-
-#: skins/default/templates/badges.html:49
-msgid "silver badge description"
-msgstr ""
-"silver badge: occasionally awarded for the very high quality contributions"
-
-#: skins/default/templates/badges.html:52
-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
-#, 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.html:3
-#: skins/default/templates/faq_static.html:3
-#: skins/default/templates/faq_static.html:5
-msgid "FAQ"
-msgstr ""
-
-#: skins/default/templates/faq_static.html:5
-msgid "Frequently Asked Questions "
+"Sincerely,\n"
+"Forum Administrator"
msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
-#: skins/default/templates/faq_static.html:6
-msgid "What kinds of questions can I ask here?"
+#: 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/default/templates/faq_static.html:7
-msgid ""
-"Most importanly - questions should be <strong>relevant</strong> to this "
-"community."
+#: 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/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."
+#: 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 ""
-"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
-msgid "What questions should I avoid asking?"
-msgstr "What kinds of questions should be avoided?"
-
-#: skins/default/templates/faq_static.html:11
+#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"Please avoid asking questions that are not relevant to this community, too "
-"subjective and argumentative."
+"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/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
+#: skins/default/templates/feedback_email.txt:2
+#: skins/old/templates/feedback_email.txt:2
+#, python-format
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/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."
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
-#: skins/default/templates/faq_static.html:18
+#: skins/old/templates/authopenid/email_validation.txt:9
msgid ""
-"The reputation system allows users earn the authorization to perform a "
-"variety of moderation tasks."
+"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 ""
-"Karma system allows users to earn rights to perform a variety of moderation "
-"tasks"
-
-#: skins/default/templates/faq_static.html:20
-msgid "How does reputation system work?"
-msgstr "How does karma system work?"
-#: skins/default/templates/faq_static.html:21
-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."
+#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
+msgid "no items in counter"
+msgstr "no"
-#: skins/default/templates/faq_static.html:22
+#: templatetags/extra_tags.py:43
#, 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:37
-#, fuzzy
-msgid "use tags"
-msgstr "Tags"
-
-#: skins/default/templates/faq_static.html:42
-#, fuzzy
-msgid "add comments"
-msgstr "post a comment"
-
-#: skins/default/templates/faq_static.html:46
-#: skins/default/templates/user_profile/user_votes.html:15
-msgid "downvote"
-msgstr ""
-
-#: skins/default/templates/faq_static.html:49
-#, 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:53
-#, fuzzy
-msgid "open and close own questions"
-msgstr "Post Your Answer"
-
-#: skins/default/templates/faq_static.html:57
-#, fuzzy
-msgid "retag other's questions"
-msgstr "Post Your Answer"
-
-#: skins/default/templates/faq_static.html:62
-msgid "edit community wiki questions"
-msgstr ""
-
-#: skins/default/templates/faq_static.html:67
-#, fuzzy
-msgid "\"edit any answer"
-msgstr "answers"
-
-#: skins/default/templates/faq_static.html:71
-#, fuzzy
-msgid "\"delete any comment"
-msgstr "post a comment"
-
-#: 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"
-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>"
-
-#: skins/default/templates/faq_static.html:76
-msgid "To register, do I need to create new password?"
-msgstr ""
-
-#: skins/default/templates/faq_static.html:77
-msgid ""
-"No, you don't have to. You can login through any service that supports "
-"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgid "%(username)s gravatar image"
msgstr ""
-#: skins/default/templates/faq_static.html:78
-#, fuzzy
-msgid "\"Login now!\""
-msgstr "Logout Now"
-
-#: skins/default/templates/faq_static.html:80
-msgid "Why other people can edit my questions/answers?"
+#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+msgid "Oops, apologies - there was some error"
msgstr ""
-#: skins/default/templates/faq_static.html:81
-msgid "Goal of this site is..."
+#: utils/decorators.py:109
+msgid "Please login to post"
msgstr ""
-#: skins/default/templates/faq_static.html:81
-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."
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr ""
-#: skins/default/templates/faq_static.html:82
-msgid "If this approach is not for you, we respect your choice."
+#: utils/forms.py:32
+msgid "this field is required"
msgstr ""
-#: skins/default/templates/faq_static.html:84
-#, fuzzy
-msgid "Still have questions?"
-msgstr "Post Your Answer"
-
-#: 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 ""
-"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
-"community better!"
+#: utils/forms.py:46
+msgid "choose a username"
+msgstr "Choose screen name"
-#: skins/default/templates/feedback.html:3
-msgid "Feedback"
+#: utils/forms.py:52
+msgid "user name is required"
msgstr ""
-#: skins/default/templates/feedback.html:5
-msgid "Give us your feedback!"
+#: utils/forms.py:53
+msgid "sorry, this name is taken, please choose another"
msgstr ""
-#: skins/default/templates/feedback.html:9
-#, 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"
-" "
+#: utils/forms.py:54
+msgid "sorry, this name is not allowed, please choose another"
msgstr ""
-#: skins/default/templates/feedback.html:16
-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"
-" "
+#: utils/forms.py:55
+msgid "sorry, there is no user with this name"
msgstr ""
-#: skins/default/templates/feedback.html:25
-#, fuzzy
-msgid "(please enter a valid email)"
-msgstr "provide enough details"
-
-#: skins/default/templates/feedback.html:33
-msgid "(this field is required)"
+#: utils/forms.py:56
+msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
-#: skins/default/templates/feedback.html:41
-msgid "Send Feedback"
+#: utils/forms.py:57
+msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
-#: skins/default/templates/feedback_email.txt:2
-#, python-format
-msgid ""
-"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
-msgstr ""
+#: utils/forms.py:118
+msgid "your email address"
+msgstr "Your email <i>(never shared)</i>"
-#: skins/default/templates/import_data.html:2
-#: skins/default/templates/import_data.html:4
-msgid "Import StackExchange data"
+#: utils/forms.py:119
+msgid "email address is required"
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."
+#: utils/forms.py:120
+msgid "please enter a valid email address"
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"
-" "
+#: utils/forms.py:121
+msgid "this email is already used by someone else, please choose another"
msgstr ""
-#: skins/default/templates/import_data.html:25
-msgid "Import data"
-msgstr ""
+#: utils/forms.py:149
+msgid "choose password"
+msgstr "Password"
-#: 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>"
+#: utils/forms.py:150
+msgid "password is required"
msgstr ""
-#: skins/default/templates/instant_notification.html:1
-#, python-format
-msgid "<p>Dear %(receiving_user_name)s,</p>"
-msgstr ""
+#: utils/forms.py:153
+msgid "retype password"
+msgstr "Password <i>(please retype)</i>"
-#: 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"
+#: utils/forms.py:154
+msgid "please, retype your password"
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"
+#: utils/forms.py:155
+msgid "sorry, entered passwords did not match, please try again"
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"
+#: utils/functions.py:74
+msgid "2 days ago"
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"
+#: utils/functions.py:76
+msgid "yesterday"
msgstr ""
-#: skins/default/templates/instant_notification.html:25
+#: utils/functions.py:79
#, 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 "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+msgstr[1] ""
-#: skins/default/templates/instant_notification.html:31
+#: utils/functions.py:85
#, 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 "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+msgstr[1] ""
-#: 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"
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
msgstr ""
-#: skins/default/templates/instant_notification.html:42
-#, fuzzy
-msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
msgstr ""
-"Sincerely,\n"
-"Q&A Forum Administrator"
-#: skins/default/templates/macros.html:25
-#, python-format
-msgid "Share this question on %(site)s"
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
msgstr ""
-#: skins/default/templates/macros.html:36
-#, python-format
-msgid "follow %(alias)s"
-msgstr ""
+#: views/commands.py:39
+msgid "anonymous users cannot vote"
+msgstr "Sorry, anonymous users cannot vote"
-#: skins/default/templates/macros.html:39
-#, python-format
-msgid "unfollow %(alias)s"
+#: views/commands.py:59
+msgid "Sorry you ran out of votes for today"
msgstr ""
-#: skins/default/templates/macros.html:40
+#: views/commands.py:65
#, python-format
-msgid "following %(alias)s"
-msgstr ""
-
-#: skins/default/templates/macros.html:63
-msgid "karma:"
+msgid "You have %(votes_left)s votes left for today"
msgstr ""
-#: skins/default/templates/macros.html:67
-msgid "badges:"
+#: views/commands.py:122
+msgid "Sorry, but anonymous users cannot access the inbox"
msgstr ""
-#: skins/default/templates/macros.html:143
-#: skins/default/templates/macros.html:144
-msgid "previous"
+#: views/commands.py:192
+msgid "Sorry, something is not right here..."
msgstr ""
-#: skins/default/templates/macros.html:155
-msgid "current page"
+#: views/commands.py:207
+msgid "Sorry, but anonymous users cannot accept answers"
msgstr ""
-#: skins/default/templates/macros.html:157
-#: skins/default/templates/macros.html:164
+#: views/commands.py:288
#, python-format
-msgid "page number %(num)s"
-msgstr "page %(num)s"
-
-#: skins/default/templates/macros.html:168
-msgid "next page"
+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/default/templates/macros.html:179
-msgid "posts per page"
+#: views/commands.py:295
+msgid "email update frequency has been set to daily"
msgstr ""
-#: skins/default/templates/macros.html:211 templatetags/extra_tags.py:43
+#: views/commands.py:400
#, python-format
-msgid "%(username)s gravatar image"
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: skins/default/templates/macros.html:220
+#: views/commands.py:409
#, python-format
-msgid "%(username)s's website is %(url)s"
+msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
-#: skins/default/templates/macros.html:232
-#, fuzzy
-msgid "anonymous user"
-msgstr "Sorry, anonymous users cannot vote"
-
-#: skins/default/templates/macros.html:260
-msgid "this post is marked as community wiki"
+#: views/commands.py:542
+msgid "Please sign in to vote"
msgstr ""
-#: skins/default/templates/macros.html:263
-#, python-format
-msgid ""
-"This post is a wiki.\n"
-" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+#: views/meta.py:84
+msgid "Q&A forum feedback"
msgstr ""
-#: skins/default/templates/macros.html:269
-msgid "asked"
+#: views/meta.py:85
+msgid "Thanks for the feedback!"
msgstr ""
-#: skins/default/templates/macros.html:271
-#, fuzzy
-msgid "answered"
-msgstr "answers"
-
-#: skins/default/templates/macros.html:273
-msgid "posted"
+#: views/meta.py:94
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: skins/default/templates/macros.html:303
-#, fuzzy
-msgid "updated"
-msgstr "Last updated"
-
-#: skins/default/templates/macros.html:379
+#: views/readers.py:151
#, fuzzy, python-format
-msgid "see questions tagged '%(tag)s'"
-msgstr "Asked"
-
-#: skins/default/templates/macros.html:424 views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/default/templates/macros.html:441 views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/default/templates/macros.html:452 views/readers.py:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/default/templates/macros.html:491
-#, fuzzy
-msgid "delete this comment"
-msgstr "post a comment"
-
-#: skins/default/templates/macros.html:502
-#: skins/default/templates/question.html:79
-#: skins/default/templates/question.html:235
-#: skins/default/templates/revisions.html:37
-msgid "edit"
-msgstr ""
-
-#: skins/default/templates/macros.html:520
-#: skins/default/templates/macros.html:528
-#: skins/default/templates/question.html:511
-msgid "add comment"
-msgstr "post a comment"
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "Asked"
+msgstr[1] "Asked"
-#: skins/default/templates/macros.html:521
+#: views/readers.py:159
#, python-format
-msgid "see <strong>%(counter)s</strong> more"
-msgid_plural "see <strong>%(counter)s</strong> more"
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/macros.html:523
+#: views/readers.py:199
#, 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:661
-msgid "one of these is required"
-msgstr ""
-
-#: skins/default/templates/macros.html:673
-msgid "(required)"
-msgstr ""
-
-#: skins/default/templates/macros.html:696
-msgid "Toggle the real time Markdown editor preview"
-msgstr ""
-
-#: skins/default/templates/macros.html:708
-#, fuzzy, python-format
-msgid "responses for %(username)s"
-msgstr "Choose screen name"
-
-#: skins/default/templates/macros.html:711
-#, python-format
-msgid "you have a new response"
-msgid_plural "you have %(response_count)s new responses"
+msgid "%(badge_count)d %(badge_level)s badge"
+msgid_plural "%(badge_count)d %(badge_level)s badges"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/macros.html:714
-msgid "no new responses yet"
-msgstr ""
-
-#: skins/default/templates/macros.html:729
-#: skins/default/templates/macros.html:730
-#, python-format
-msgid "%(new)s new flagged posts and %(seen)s previous"
-msgstr ""
-
-#: skins/default/templates/macros.html:732
-#: skins/default/templates/macros.html:733
-#, python-format
-msgid "%(new)s new flagged posts"
-msgstr ""
-
-#: skins/default/templates/macros.html:738
-#: skins/default/templates/macros.html:739
-#, python-format
-msgid "%(seen)s flagged posts"
-msgstr ""
-
-#: skins/default/templates/main_page.html:11
-#, fuzzy
-msgid "Questions"
-msgstr "Tags"
-
-#: skins/default/templates/privacy.html:3
-#: skins/default/templates/privacy.html:5
-msgid "Privacy policy"
+#: views/readers.py:415
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
msgstr ""
-#: skins/default/templates/question.html:26
-#: skins/default/templates/question.html:27
-#: skins/default/templates/question.html:42
-#: skins/default/templates/question.html:44
-msgid "i like this post (click again to cancel)"
+#: views/users.py:211
+msgid "moderate this user"
msgstr ""
-#: skins/default/templates/question.html:29
-#: skins/default/templates/question.html:46
-#: skins/default/templates/question.html:186
-msgid "current number of votes"
+#: views/users.py:212
+msgid "moderate user"
msgstr ""
-#: skins/default/templates/question.html:38
-#: skins/default/templates/question.html:39
-#: skins/default/templates/question.html:51
-#: skins/default/templates/question.html:52
-msgid "i dont like this post (click again to cancel)"
+#: views/users.py:386
+msgid "user profile"
msgstr ""
-#: skins/default/templates/question.html:82
-msgid "retag"
+#: views/users.py:387
+msgid "user profile overview"
msgstr ""
-#: skins/default/templates/question.html:89
-#, fuzzy
-msgid "reopen"
-msgstr "You can safely re-use the same login for all OpenID-enabled websites."
-
-#: skins/default/templates/question.html:93
-msgid "close"
+#: views/users.py:698
+msgid "recent user activity"
msgstr ""
-#: skins/default/templates/question.html:98
-#: skins/default/templates/question.html:239
-msgid ""
-"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+#: views/users.py:699
+msgid "profile - recent activity"
msgstr ""
-#: skins/default/templates/question.html:99
-#: skins/default/templates/question.html:240
-msgid "flag offensive"
+#: views/users.py:785
+msgid "comments and answers to others questions"
msgstr ""
-#: skins/default/templates/question.html:106
-#: skins/default/templates/question.html:250
-msgid "undelete"
+#: views/users.py:786
+msgid "profile - responses"
msgstr ""
-#: skins/default/templates/question.html:106
-#: skins/default/templates/question.html:250
-#: skins/default/templates/authopenid/signin.html:166
-msgid "delete"
+#: views/users.py:860
+msgid "user vote record"
msgstr ""
-#: skins/default/templates/question.html:143
-#, python-format
-msgid ""
-"The question has been closed for the following reason \"%(close_reason)s\" by"
+#: views/users.py:861
+msgid "profile - votes"
msgstr ""
-#: skins/default/templates/question.html:145
-#, python-format
-msgid "close date %(closed_at)s"
-msgstr ""
+#: views/users.py:896
+msgid "user reputation in the community"
+msgstr "user karma"
-#: skins/default/templates/question.html:151
-#, python-format
-msgid ""
-"\n"
-" %(counter)s Answer:\n"
-" "
-msgid_plural ""
-"\n"
-" %(counter)s Answers:\n"
-" "
-msgstr[0] ""
-msgstr[1] ""
+#: views/users.py:897
+msgid "profile - user reputation"
+msgstr "Profile - User's Karma"
-#: skins/default/templates/question.html:159
-msgid "oldest answers will be shown first"
+#: views/users.py:924
+msgid "users favorite questions"
msgstr ""
-#: skins/default/templates/question.html:160
-msgid "oldest answers"
-msgstr "oldest"
-
-#: skins/default/templates/question.html:162
-msgid "newest answers will be shown first"
+#: views/users.py:925
+msgid "profile - favorite questions"
msgstr ""
-#: skins/default/templates/question.html:163
-msgid "newest answers"
-msgstr "newest"
-
-#: skins/default/templates/question.html:165
-msgid "most voted answers will be shown first"
+#: views/users.py:945 views/users.py:949
+msgid "changes saved"
msgstr ""
-#: skins/default/templates/question.html:166
-msgid "popular answers"
-msgstr "most voted"
-
-#: skins/default/templates/question.html:184
-#: skins/default/templates/question.html:185
-msgid "i like this answer (click again to cancel)"
+#: views/users.py:955
+msgid "email updates canceled"
msgstr ""
-#: skins/default/templates/question.html:195
-#: skins/default/templates/question.html:196
-msgid "i dont like this answer (click again to cancel)"
+#: views/users.py:973
+msgid "email subscription settings"
msgstr ""
-#: skins/default/templates/question.html:204
-#: skins/default/templates/question.html:205
-msgid "mark this answer as favorite (click again to undo)"
+#: views/users.py:974
+msgid "profile - email subscriptions"
msgstr ""
-#: skins/default/templates/question.html:214
-#: skins/default/templates/question.html:215
-#, python-format
-msgid "%(question_author)s has selected this answer as correct"
+#: views/writers.py:58
+msgid "Sorry, anonymous users cannot upload files"
msgstr ""
-#: skins/default/templates/question.html:230
-msgid "answer permanent link"
-msgstr "permanent link"
-
-#: skins/default/templates/question.html:231
-msgid "permanent link"
-msgstr "link"
-
-#: skins/default/templates/question.html:256
-#, fuzzy
-msgid "swap with question"
-msgstr "Post Your Answer"
-
-#: skins/default/templates/question.html:297
+#: views/writers.py:68
#, 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.html:303
-msgid " or"
-msgstr ""
-
-#: skins/default/templates/question.html:305
-msgid "email"
-msgstr ""
-
-#: skins/default/templates/question.html:320
-#: skins/default/templates/question.html:322
-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.html:324
-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.html:326
-msgid "Notify me immediately when there are any new answers"
+msgid "allowed file types are '%(file_types)s'"
msgstr ""
-"<strong>Notify me</strong> immediately when there are any new answers or "
-"updates"
-#: skins/default/templates/question.html:329
+#: views/writers.py:91
#, python-format
-msgid ""
-"You can always adjust frequency of email updates from your %(profile_url)s"
+msgid "maximum upload file size is %(file_size)sK"
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.html:334
-msgid "once you sign in you will be able to subscribe for any updates here"
+#: views/writers.py:99
+msgid "Error uploading file. Please contact the site administrator. Thank you."
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.html:344
-#, fuzzy
-msgid "Login/Signup to Answer"
-msgstr "Login/Signup to Post"
-#: skins/default/templates/question.html:352
+#: views/writers.py:191
#, fuzzy
-msgid "Your answer"
-msgstr "oldest"
+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."
-#: skins/default/templates/question.html:354
+#: views/writers.py:492
#, fuzzy
-msgid "Be the first one to answer this question!"
+msgid "Please log in to answer 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 "
@@ -4473,2024 +3884,952 @@ msgstr ""
"please <strong>don't forget to vote</strong> - it really helps to select the "
"best questions and answers!"
-#: skins/default/templates/question.html:360
-msgid "you can answer anonymously and then login"
+#: views/writers.py:598
+#, 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 ""
-"<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.html:364
-msgid "answer your own question only to give an answer"
+#: views/writers.py:646
+msgid "Sorry, anonymous users cannot edit comments"
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/question.html:366
-msgid "please only give an answer, no discussions"
+#: views/writers.py:654
+#, 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 ""
-"<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.html:373
-msgid "Login/Signup to Post Your Answer"
-msgstr "Login/Signup to Post"
-#: skins/default/templates/question.html:376
-#: skins/default/templates/question.html:389
-#, fuzzy
-msgid "Answer Your Own Question"
-msgstr "Post Your Answer"
+#: views/writers.py:675
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
-#: skins/default/templates/question.html:378
-msgid "Answer the question"
-msgstr "Post Your Answer"
+#~ msgid "Change email"
+#~ msgstr "Change Email"
-#: skins/default/templates/question.html:397
#, fuzzy
-msgid "Question tools"
-msgstr "Tags"
+#~ msgid "Save your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
-#: skins/default/templates/question.html:400
-#, 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."
+#~ 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>"
-#: skins/default/templates/question.html:401
-msgid "Following"
-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 "Your new Email"
+#~ msgstr ""
+#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
+#~ "anyone, must be valid)"
-#: skins/default/templates/question.html:402
-msgid "Unfollow"
-msgstr ""
+#~ msgid "Your Email"
+#~ msgstr ""
+#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: skins/default/templates/question.html:406
#, 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.html:407
-msgid "Follow"
-msgstr ""
+#~ msgid "Save Email"
+#~ msgstr "Change Email"
-#: skins/default/templates/question.html:414
-#, python-format
-msgid "%(count)s follower"
-msgid_plural "%(count)s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/default/templates/question.html:420
#, fuzzy
-msgid "email the updates"
-msgstr "Last updated"
+#~ msgid "Validate email"
+#~ msgstr "How to validate email and why?"
-#: skins/default/templates/question.html:423
-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.html:428
-msgid "subscribe to this question rss feed"
-msgstr ""
-
-#: skins/default/templates/question.html:429
-msgid "subsribe to rss feed"
-msgstr ""
-
-#: skins/default/templates/question.html:438
-msgid "Question tags"
-msgstr "Tags"
-
-#: skins/default/templates/question.html:460
-msgid "Stats:"
-msgstr ""
-
-#: skins/default/templates/question.html:462
-msgid "question asked"
-msgstr "Asked"
+#~ 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."
-#: skins/default/templates/question.html:465
-msgid "question was seen"
-msgstr "Seen"
+#~ 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/question.html:465
-msgid "times"
-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/default/templates/question.html:468
-msgid "last updated"
-msgstr "Last updated"
+#~ msgid "email key not sent"
+#~ msgstr "Validation email not sent"
-#: skins/default/templates/question.html:477
-#, fuzzy
-msgid "Related questions"
-msgstr "Tags"
+#~ 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/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
-msgid "Change tags"
-msgstr "Retag question"
-
-#: skins/default/templates/question_retag.html:21
-msgid "Retag"
-msgstr ""
+#~ msgid "Registration"
+#~ msgstr "karma"
-#: skins/default/templates/question_retag.html:28
-msgid "Why use and modify 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/default/templates/question_retag.html:30
-msgid "Tags help to keep the content better organized and searchable"
-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/question_retag.html:32
-msgid "tag editors receive special awards from the community"
-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>"
+
+#~ 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>)"
-#: skins/default/templates/question_retag.html:59
-msgid "up to 5 tags, less than 20 characters each"
-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/reopen.html:3 skins/default/templates/reopen.html:5
-#, fuzzy
-msgid "Reopen question"
-msgstr "Post Your Answer"
+#~ msgid "create account"
+#~ msgstr "Signup"
-#: skins/default/templates/reopen.html:6
-msgid "Title"
-msgstr ""
+#~ msgid "Logout"
+#~ msgstr "Sign out"
-#: 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 ""
+#~ msgid "User login"
+#~ msgstr "User login"
-#: skins/default/templates/reopen.html:16
-msgid "Close reason:"
-msgstr ""
+#~ 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/reopen.html:19
-msgid "When:"
-msgstr ""
+#~ 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/reopen.html:22
#, fuzzy
-msgid "Reopen this question?"
-msgstr "Post Your Answer"
+#~ msgid "Password"
+#~ msgstr "Password"
-#: skins/default/templates/reopen.html:26
-#, fuzzy
-msgid "Reopen this question"
-msgstr "Post Your Answer"
+#~ msgid "Login"
+#~ msgstr "Sign in"
-#: skins/default/templates/revisions.html:4
-#: skins/default/templates/revisions.html:7
#, fuzzy
-msgid "Revision history"
-msgstr "karma"
+#~ msgid "New password"
+#~ msgstr "Password"
-#: 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."
+#~ msgid "last used"
+#~ msgstr "Last updated"
-#: skins/default/templates/revisions.html:29
-#, python-format
-msgid "revision %(number)s"
-msgstr ""
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "sorry, but older votes cannot be revoked"
-#: skins/default/templates/subscribe_for_tags.html:3
-#: skins/default/templates/subscribe_for_tags.html:5
-msgid "Subscribe for tags"
-msgstr ""
+#~ msgid "with openid it is easier"
+#~ msgstr "With the OpenID you don't need to create new username and password."
-#: 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 ""
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "You can safely re-use the same login for all OpenID-enabled websites."
-#: skins/default/templates/tags.html:4 skins/default/templates/tags.html:11
-msgid "Tag list"
-msgstr "Tags"
+#~ msgid "openid is widely adopted"
+#~ msgstr ""
+#~ "There are > 160,000,000 OpenID account in use. Over 10,000 sites are "
+#~ "OpenID-enabled."
-#: skins/default/templates/tags.html:9
-#, python-format
-msgid "Tags, matching \"%(stag)s\""
-msgstr ""
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID is based on an open standard, supported by many organizations."
-#: skins/default/templates/tags.html:19
-msgid "sorted alphabetically"
-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/tags.html:20
#, fuzzy
-msgid "by name"
-msgstr "date"
-
-#: skins/default/templates/tags.html:25
-msgid "sorted by frequency of tag use"
-msgstr ""
+#~ msgid "Create Account"
+#~ msgstr "Signup"
-#: skins/default/templates/tags.html:26
#, fuzzy
-msgid "by popularity"
-msgstr "most voted"
+#~ msgid "add avatar"
+#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: 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:7
-msgid "Users"
-msgstr "People"
-
-#: skins/default/templates/users.html:13
-msgid "see people with the highest reputation"
-msgstr ""
-
-#: skins/default/templates/users.html:14
-#: skins/default/templates/user_profile/user_info.html:25
-msgid "reputation"
-msgstr "karma"
-
-#: skins/default/templates/users.html:19
-msgid "see people who joined most recently"
-msgstr ""
-
-#: skins/default/templates/users.html:20
-msgid "recent"
-msgstr ""
-
-#: skins/default/templates/users.html:25
-msgid "see people who joined the site first"
-msgstr ""
-
-#: skins/default/templates/users.html:31
-msgid "see people sorted by name"
-msgstr ""
-
-#: skins/default/templates/users.html:32
#, fuzzy
-msgid "by username"
-msgstr "Choose screen name"
-
-#: skins/default/templates/users.html:37
-#, python-format
-msgid "users matching query %(suser)s:"
-msgstr ""
-
-#: skins/default/templates/users.html:40
-msgid "Nothing found."
-msgstr ""
+#~ msgid "Change avatar"
+#~ msgstr "Retag question"
-#: 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 "Change Email"
-
-#: skins/default/templates/authopenid/changeemail.html:10
#, fuzzy
-msgid "Save your email address"
-msgstr "Your email <i>(never shared)</i>"
+#~ msgid "change avatar"
+#~ msgstr "Retag question"
-#: skins/default/templates/authopenid/changeemail.html:15
-#, python-format
-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>"
-
-#: 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'>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."
+#, fuzzy
+#~ msgid "delete avatar"
+#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: skins/default/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)"
+#~ msgid "answer permanent link"
+#~ msgstr "permanent link"
-#: skins/default/templates/authopenid/changeemail.html:29
-msgid "Your Email"
-msgstr ""
-"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+#~ msgid "permanent link"
+#~ msgstr "link"
-#: skins/default/templates/authopenid/changeemail.html:36
#, fuzzy
-msgid "Save Email"
-msgstr "Change Email"
+#~ msgid "swap with question"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/authopenid/changeemail.html:45
#, fuzzy
-msgid "Validate email"
-msgstr "How to validate email and why?"
-
-#: 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\">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/default/templates/authopenid/changeemail.html:52
-msgid "Email not changed"
-msgstr ""
-
-#: 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\">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/authopenid/changeemail.html:59
-msgid "Email changed"
-msgstr ""
-
-#: skins/default/templates/authopenid/changeemail.html:62
-#, 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 "
-"are any news."
-
-#: skins/default/templates/authopenid/changeemail.html:66
-msgid "Email verified"
-msgstr ""
-
-#: skins/default/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 "
-"updates</strong> - then will be notified about changes <strong>once a day</"
-"strong> or less frequently."
+#~ msgid "reopen"
+#~ msgstr ""
+#~ "You can safely re-use the same login for all OpenID-enabled websites."
-#: skins/default/templates/authopenid/changeemail.html:73
-msgid "email key not sent"
-msgstr "Validation email not sent"
+#~ msgid "Related tags"
+#~ msgstr "Tags"
-#: skins/default/templates/authopenid/changeemail.html:76
-#, python-format
-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/authopenid/complete.html:21
-#: skins/default/templates/authopenid/complete.html:23
#, fuzzy
-msgid "Registration"
-msgstr "karma"
-
-#: 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\">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/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'>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/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\">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/authopenid/complete.html:37
-#, python-format
-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/authopenid/complete.html:40
-msgid "This account already exists, please use another."
-msgstr ""
-
-#: skins/default/templates/authopenid/complete.html:59
-msgid "Screen name label"
-msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
-
-#: skins/default/templates/authopenid/complete.html:66
-msgid "Email address label"
-msgstr ""
-"<strong>Email Address</strong> (<i>will <strong>not</strong> be shared with "
-"anyone, must be valid</i>)"
-
-#: skins/default/templates/authopenid/complete.html:72
-#: skins/default/templates/authopenid/signup_with_password.html:36
-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/authopenid/complete.html:76
-#: skins/default/templates/authopenid/signup_with_password.html:40
-msgid "please select one of the options above"
-msgstr ""
-
-#: skins/default/templates/authopenid/complete.html:79
-msgid "Tag filter tool will be your right panel, once you log in."
-msgstr ""
-
-#: skins/default/templates/authopenid/complete.html:80
-msgid "create account"
-msgstr "Signup"
+#~ msgid "Interesting tags"
+#~ msgstr "Tags"
-#: skins/default/templates/authopenid/confirm_email.txt:1
-msgid "Thank you for registering at our Q&A forum!"
-msgstr ""
-
-#: skins/default/templates/authopenid/confirm_email.txt:3
-msgid "Your account details are:"
-msgstr ""
-
-#: skins/default/templates/authopenid/confirm_email.txt:5
#, fuzzy
-msgid "Username:"
-msgstr "Choose screen name"
+#~ msgid "Ignored tags"
+#~ msgstr "Retag question"
-#: skins/default/templates/authopenid/confirm_email.txt:6
#, fuzzy
-msgid "Password:"
-msgstr "Password"
+#~ msgid "see all questions"
+#~ msgstr "Ask Your Question"
-#: skins/default/templates/authopenid/confirm_email.txt:8
-msgid "Please sign in here:"
-msgstr ""
-
-#: skins/default/templates/authopenid/confirm_email.txt:11
-#: skins/default/templates/authopenid/email_validation.txt:13
#, fuzzy
-msgid ""
-"Sincerely,\n"
-"Forum Administrator"
-msgstr ""
-"Sincerely,\n"
-"Q&A Forum Administrator"
+#~ msgid "see all tags"
+#~ msgstr "Tags"
-#: skins/default/templates/authopenid/email_validation.txt:1
-msgid "Greetings from the Q&A forum"
-msgstr ""
-
-#: skins/default/templates/authopenid/email_validation.txt:3
-msgid "To make use of the Forum, please follow the link below:"
-msgstr ""
-
-#: skins/default/templates/authopenid/email_validation.txt:7
-msgid "Following the link above will help us verify your email address."
-msgstr ""
-
-#: skins/default/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/authopenid/logout.html:3
-msgid "Logout"
-msgstr "Sign out"
-
-#: skins/default/templates/authopenid/logout.html:5
-msgid "You have successfully logged out"
-msgstr ""
-
-#: skins/default/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
-msgid "Please enter your <span>user name</span>, then sign in"
-msgstr ""
-
-#: skins/default/templates/authopenid/macros.html:54
-#: skins/default/templates/authopenid/signin.html:90
-msgid "(or select another login method above)"
-msgstr ""
-
-#: skins/default/templates/authopenid/macros.html:56
-msgid "Sign in"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:4
-msgid "User login"
-msgstr "User login"
-
-#: skins/default/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/default/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/default/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."
-msgstr ""
-
-#: skins/default/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/default/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/default/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/default/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/default/templates/authopenid/signin.html:42
-msgid ""
-"Please check your email and visit the enclosed link to re-connect to your "
-"account"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:87
-msgid "Please enter your <span>user name and password</span>, then sign in"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:93
-msgid "Login failed, please try again"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:97
-msgid "Login or email"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:101
#, fuzzy
-msgid "Password"
-msgstr "Password"
+#~ msgid "see latest questions"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/authopenid/signin.html:106
-msgid "Login"
-msgstr "Sign in"
-
-#: skins/default/templates/authopenid/signin.html:113
-msgid "To change your password - please enter the new one twice, then submit"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:117
#, fuzzy
-msgid "New password"
-msgstr "Password"
-
-#: skins/default/templates/authopenid/signin.html:124
-msgid "Please, retype"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:146
-msgid "Here are your current login methods"
-msgstr ""
+#~ msgid "see tags"
+#~ msgstr "Tags"
-#: skins/default/templates/authopenid/signin.html:150
-msgid "provider"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:151
#, fuzzy
-msgid "last used"
-msgstr "Last updated"
-
-#: skins/default/templates/authopenid/signin.html:152
-msgid "delete, if you like"
-msgstr ""
+#~ msgid "Edit answer"
+#~ msgstr "oldest"
-#: skins/default/templates/authopenid/signin.html:168
#, fuzzy
-msgid "cannot be deleted"
-msgstr "sorry, but older votes cannot be revoked"
-
-#: skins/default/templates/authopenid/signin.html:181
-msgid "Still have trouble signing in?"
-msgstr ""
+#~ msgid "Ask a question"
+#~ msgstr "Ask Your Question"
-#: skins/default/templates/authopenid/signin.html:186
-msgid "Please, enter your email address below and obtain a new key"
-msgstr ""
+#~ msgid "Badges summary"
+#~ msgstr "Badges"
-#: skins/default/templates/authopenid/signin.html:188
-msgid "Please, enter your email address below to recover your account"
-msgstr ""
-
-#: skins/default/templates/authopenid/signin.html:191
-msgid "recover your account via email"
-msgstr ""
+#, fuzzy
+#~ msgid "Badges"
+#~ msgstr "Badges"
-#: skins/default/templates/authopenid/signin.html:202
-msgid "Send a new recovery key"
-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 ""
+#~ "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/authopenid/signin.html:204
-msgid "Recover your account via email"
-msgstr ""
+#~ msgid "Community badges"
+#~ msgstr "Badge levels"
-#: skins/default/templates/authopenid/signin.html:216
-msgid "Why use OpenID?"
-msgstr ""
-
-#: skins/default/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."
+#~ 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."
-#: skins/default/templates/authopenid/signin.html:222
-msgid "reuse openid"
-msgstr "You can safely re-use the same login for all OpenID-enabled websites."
+#~ msgid "silver badge description"
+#~ msgstr ""
+#~ "silver badge: occasionally awarded for the very high quality contributions"
-#: skins/default/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."
+#~ msgid "bronze badge description"
+#~ msgstr "bronze badge: often given as a special honor"
-#: skins/default/templates/authopenid/signin.html:228
-msgid "openid is supported open standard"
-msgstr "OpenID is based on an open standard, supported by many organizations."
+#, fuzzy
+#~ msgid "Close question"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/authopenid/signin.html:232
-msgid "Find out more"
-msgstr ""
+#, fuzzy
+#~ msgid "Close the question"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/authopenid/signin.html:233
-msgid "Get OpenID"
-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/authopenid/signup_with_password.html:4
-msgid "Signup"
-msgstr ""
+#~ msgid "What questions should I avoid asking?"
+#~ msgstr "What kinds of questions should be avoided?"
-#: skins/default/templates/authopenid/signup_with_password.html:10
-msgid "Please register by clicking on any of the icons below"
-msgstr ""
+#, fuzzy
+#~ msgid "What should I avoid in my answers?"
+#~ msgstr "What kinds of questions should be avoided?"
-#: skins/default/templates/authopenid/signup_with_password.html:23
-msgid "or create a new user name and password here"
-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/authopenid/signup_with_password.html:25
-msgid "Create login name and password"
-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/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 "
-"your login details with anyone and having to remember yet another password."
+#~ msgid "How does reputation system work?"
+#~ msgstr "How does karma system work?"
-#: skins/default/templates/authopenid/signup_with_password.html:44
-msgid ""
-"Please read and type in the two words below to help us prevent automated "
-"account creation."
-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/authopenid/signup_with_password.html:47
#, fuzzy
-msgid "Create Account"
-msgstr "Signup"
-
-#: skins/default/templates/authopenid/signup_with_password.html:49
-msgid "or"
-msgstr ""
-
-#: skins/default/templates/authopenid/signup_with_password.html:50
-msgid "return to OpenID login"
-msgstr ""
+#~ msgid "use tags"
+#~ msgstr "Tags"
-#: skins/default/templates/avatar/add.html:3
#, fuzzy
-msgid "add avatar"
-msgstr "How to change my picture (gravatar) and what is gravatar?"
+#~ msgid "add comments"
+#~ msgstr "post a comment"
-#: skins/default/templates/avatar/add.html:5
#, fuzzy
-msgid "Change avatar"
-msgstr "Retag question"
-
-#: skins/default/templates/avatar/add.html:6
-#: skins/default/templates/avatar/change.html:7
-msgid "Your current avatar: "
-msgstr ""
-
-#: skins/default/templates/avatar/add.html:9
-#: skins/default/templates/avatar/change.html:11
-msgid "You haven't uploaded an avatar yet. Please upload one now."
-msgstr ""
-
-#: skins/default/templates/avatar/add.html:13
-msgid "Upload New Image"
-msgstr ""
+#~ 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/avatar/change.html:4
#, fuzzy
-msgid "change avatar"
-msgstr "Retag question"
-
-#: skins/default/templates/avatar/change.html:17
-msgid "Choose new Default"
-msgstr ""
+#~ msgid "open and close own questions"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/avatar/change.html:22
-msgid "Upload"
-msgstr ""
-
-#: skins/default/templates/avatar/confirm_delete.html:3
#, fuzzy
-msgid "delete avatar"
-msgstr "How to change my picture (gravatar) and what is gravatar?"
+#~ msgid "retag other's questions"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/avatar/confirm_delete.html:5
-msgid "Please select the avatars that you would like to delete."
-msgstr ""
-
-#: skins/default/templates/avatar/confirm_delete.html:7
-#, python-format
-msgid ""
-"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
-"\">upload one</a> now."
-msgstr ""
-
-#: skins/default/templates/avatar/confirm_delete.html:13
-msgid "Delete These"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:3
-msgid "answer tips"
-msgstr "Tips"
-
-#: skins/default/templates/blocks/answer_edit_tips.html:6
-msgid "please make your answer relevant to this community"
-msgstr "ask a question interesting to this community"
-
-#: skins/default/templates/blocks/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/blocks/answer_edit_tips.html:12
-msgid "please try to provide details"
-msgstr "provide enough details"
-
-#: skins/default/templates/blocks/answer_edit_tips.html:15
-#: skins/default/templates/blocks/question_edit_tips.html:11
-msgid "be clear and concise"
-msgstr ""
+#~ msgid "\"edit any answer"
+#~ msgstr "answers"
-#: skins/default/templates/blocks/answer_edit_tips.html:19
-#: skins/default/templates/blocks/question_edit_tips.html:15
#, 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."
+#~ msgid "\"delete any comment"
+#~ msgstr "post a comment"
-#: skins/default/templates/blocks/answer_edit_tips.html:25
-#: skins/default/templates/blocks/question_edit_tips.html:20
-msgid "Markdown tips"
-msgstr "Markdown basics"
+#~ msgid "what is gravatar"
+#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: skins/default/templates/blocks/answer_edit_tips.html:29
-#: skins/default/templates/blocks/question_edit_tips.html:24
-msgid "*italic*"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:32
-#: skins/default/templates/blocks/question_edit_tips.html:27
-msgid "**bold**"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:36
-#: skins/default/templates/blocks/question_edit_tips.html:31
-msgid "*italic* or _italic_"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:39
-#: skins/default/templates/blocks/question_edit_tips.html:34
-msgid "**bold** or __bold__"
-msgstr ""
+#~ 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>"
-#: skins/default/templates/blocks/answer_edit_tips.html:43
-#: skins/default/templates/blocks/question_edit_tips.html:38
#, fuzzy
-msgid "link"
-msgstr "Hi, there! Please sign in"
-
-#: skins/default/templates/blocks/answer_edit_tips.html:43
-#: skins/default/templates/blocks/answer_edit_tips.html:47
-#: skins/default/templates/blocks/question_edit_tips.html:38
-#: skins/default/templates/blocks/question_edit_tips.html:43
-msgid "text"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:47
-#: skins/default/templates/blocks/question_edit_tips.html:43
-msgid "image"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:51
-#: skins/default/templates/blocks/question_edit_tips.html:47
-msgid "numbered list:"
-msgstr ""
+#~ msgid "\"Login now!\""
+#~ msgstr "Logout Now"
-#: skins/default/templates/blocks/answer_edit_tips.html:56
-#: skins/default/templates/blocks/question_edit_tips.html:52
-msgid "basic HTML tags are also supported"
-msgstr ""
-
-#: skins/default/templates/blocks/answer_edit_tips.html:60
-#: skins/default/templates/blocks/question_edit_tips.html:56
-msgid "learn more about Markdown"
-msgstr ""
-
-#: skins/default/templates/blocks/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/blocks/ask_form.html:10
-#, fuzzy, python-format
-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/blocks/ask_form.html:34
-msgid "Login/signup to post your question"
-msgstr "Login/Signup to Post"
-
-#: skins/default/templates/blocks/ask_form.html:36
-msgid "Ask your question"
-msgstr "Ask Your Question"
-
-#: skins/default/templates/blocks/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/blocks/editor_data.html:5
-#, 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/blocks/editor_data.html:7
-#, 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/blocks/editor_data.html:8
-#, python-format
-msgid ""
-"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
-msgstr ""
-
-#: skins/default/templates/blocks/footer.html:4
-#: skins/default/templates/blocks/header_meta_links.html:12
-msgid "about"
-msgstr ""
-
-#: skins/default/templates/blocks/footer.html:6
-msgid "privacy policy"
-msgstr ""
-
-#: skins/default/templates/blocks/footer.html:15
-msgid "give feedback"
-msgstr ""
-
-#: skins/default/templates/blocks/footer.html:41
-#, python-format
-msgid "Content on this site is licensed under a %(license)s"
-msgstr ""
-
-#: skins/default/templates/blocks/header.html:8
-msgid "back to home page"
-msgstr ""
-
-#: skins/default/templates/blocks/header.html:9
-#, python-format
-msgid "%(site)s logo"
-msgstr ""
-
-#: skins/default/templates/blocks/header.html:20
#, fuzzy
-msgid "questions"
-msgstr "Tips"
+#~ msgid "Still have questions?"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/blocks/header.html:30
-msgid "users"
-msgstr "people"
-
-#: skins/default/templates/blocks/header.html:35
-msgid "badges"
-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/blocks/header.html:40
#, fuzzy
-msgid "ask a question"
-msgstr "Ask Your Question"
-
-#: skins/default/templates/blocks/header_meta_links.html:8
-msgid "logout"
-msgstr "sign out"
-
-#: skins/default/templates/blocks/header_meta_links.html:10
-msgid "login"
-msgstr "Hi, there! Please sign in"
+#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+#~ msgstr ""
+#~ "Sincerely,\n"
+#~ "Q&A Forum Administrator"
-#: skins/default/templates/blocks/header_meta_links.html:15
#, fuzzy
-msgid "settings"
-msgstr "User login"
-
-#: skins/default/templates/blocks/input_bar.html:34
-msgid "search"
-msgstr ""
-
-#: skins/default/templates/blocks/question_edit_tips.html:3
-msgid "question tips"
-msgstr "Tips"
-
-#: skins/default/templates/blocks/question_edit_tips.html:5
-msgid "please ask a relevant question"
-msgstr "ask a question interesting to this community"
-
-#: skins/default/templates/blocks/question_edit_tips.html:8
-msgid "please try provide enough details"
-msgstr "provide enough details"
+#~ msgid "anonymous user"
+#~ msgstr "Sorry, anonymous users cannot vote"
-#: skins/default/templates/blocks/tag_selector.html:4
#, fuzzy
-msgid "Interesting tags"
-msgstr "Tags"
-
-#: 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
-msgid "Add"
-msgstr ""
+#~ msgid "answered"
+#~ msgstr "answers"
-#: skins/default/templates/blocks/tag_selector.html:20
#, fuzzy
-msgid "Ignored tags"
-msgstr "Retag question"
-
-#: skins/default/templates/blocks/tag_selector.html:36
-msgid "Display tag filter"
-msgstr ""
-
-#: skins/default/templates/main_page/content.html:13
-msgid "Did not find what you were looking for?"
-msgstr ""
+#~ msgid "updated"
+#~ msgstr "Last updated"
-#: skins/default/templates/main_page/content.html:14
#, fuzzy
-msgid "Please, post your question!"
-msgstr "Ask Your Question"
+#~ msgid "see questions tagged '%(tag)s'"
+#~ msgstr "Asked"
-#: skins/default/templates/main_page/headline.html:7
#, fuzzy
-msgid "subscribe to the questions feed"
-msgstr "Post Your Answer"
-
-#: skins/default/templates/main_page/headline.html:8
-msgid "rss feed"
-msgstr ""
+#~ msgid "delete this comment"
+#~ msgstr "post a comment"
-#: skins/default/templates/main_page/headline.html:12 views/readers.py:131
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "Asked"
-msgstr[1] "Asked"
-
-#: skins/default/templates/main_page/headline.html:14 views/readers.py:139
-#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] ""
-msgstr[1] ""
+#~ msgid "add comment"
+#~ msgstr "post a comment"
-#: skins/default/templates/main_page/headline.html:17
-#, python-format
-msgid "with %(author_name)s's contributions"
-msgstr ""
+#~ msgid "page number %(num)s"
+#~ msgstr "page %(num)s"
-#: skins/default/templates/main_page/headline.html:28
#, fuzzy
-msgid "Search tips:"
-msgstr "Tips"
-
-#: skins/default/templates/main_page/headline.html:31
-msgid "reset author"
-msgstr ""
-
-#: skins/default/templates/main_page/headline.html:33
-#: skins/default/templates/main_page/headline.html:36
-#: skins/default/templates/main_page/nothing_found.html:18
-#: skins/default/templates/main_page/nothing_found.html:21
-msgid " or "
-msgstr ""
+#~ msgid "responses for %(username)s"
+#~ msgstr "Choose screen name"
-#: skins/default/templates/main_page/headline.html:34
#, fuzzy
-msgid "reset tags"
-msgstr "Tags"
-
-#: skins/default/templates/main_page/headline.html:37
-#: skins/default/templates/main_page/headline.html:40
-msgid "start over"
-msgstr ""
+#~ msgid "Questions"
+#~ msgstr "Tags"
-#: skins/default/templates/main_page/headline.html:42
-msgid " - to expand, or dig in by adding more tags and revising the query."
-msgstr ""
+#, fuzzy
+#~ msgid "Edit question"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/main_page/headline.html:45
-msgid "Search tip:"
-msgstr ""
+#~ msgid "Change tags"
+#~ msgstr "Retag question"
-#: skins/default/templates/main_page/headline.html:45
-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!"
+#~ msgid "Reopen question"
+#~ msgstr "Post Your Answer"
-#: 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 star (bookmark) some questions or follow some users."
-msgstr ""
-
-#: skins/default/templates/main_page/nothing_found.html:13
-msgid "You can expand your search by "
-msgstr ""
+#~ msgid "Reopen this question?"
+#~ msgstr "Post Your Answer"
-#: 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"
+#~ msgid "Reopen this question"
+#~ msgstr "Post Your Answer"
-#: 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/sidebar.html:8
-msgid "Contributors"
-msgstr ""
+#~ msgid "Revision history"
+#~ msgstr "karma"
-#: skins/default/templates/main_page/sidebar.html:25
-msgid "Related tags"
-msgstr "Tags"
+#, 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/main_page/tab_bar.html:5
-msgid "In:"
-msgstr ""
+#~ msgid "Tag list"
+#~ msgstr "Tags"
-#: skins/default/templates/main_page/tab_bar.html:14
#, fuzzy
-msgid "see unanswered questions"
-msgstr "Ask Your Question"
+#~ msgid "by name"
+#~ msgstr "date"
-#: skins/default/templates/main_page/tab_bar.html:20
#, fuzzy
-msgid "see your followed questions"
-msgstr "Ask Your Question"
+#~ msgid "by popularity"
+#~ msgstr "most voted"
-#: skins/default/templates/main_page/tab_bar.html:21
-msgid "followed"
-msgstr ""
-
-#: skins/default/templates/main_page/tab_bar.html:25
-msgid "Sort by:"
-msgstr ""
+#~ msgid "Users"
+#~ msgstr "People"
-#: skins/default/templates/user_profile/user.html:13
-#, 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 ""
+#~ msgid "reputation"
+#~ msgstr "karma"
-#: skins/default/templates/user_profile/user_edit.html:17
-#: skins/default/templates/user_profile/user_info.html:15
#, fuzzy
-msgid "change picture"
-msgstr "Retag question"
-
-#: skins/default/templates/user_profile/user_edit.html:20
-msgid "Registered user"
-msgstr ""
+#~ msgid "by username"
+#~ msgstr "Choose screen name"
-#: skins/default/templates/user_profile/user_edit.html:27
#, fuzzy
-msgid "Screen Name"
-msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
+#~ msgid "Search tips:"
+#~ msgstr "Tips"
-#: skins/default/templates/user_profile/user_edit.html:83
-#: skins/default/templates/user_profile/user_email_subscriptions.html:21
#, fuzzy
-msgid "Update"
-msgstr "date"
+#~ msgid "reset tags"
+#~ msgstr "Tags"
-#: 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:8
-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_email_subscriptions.html:22
-msgid "Stop sending email"
-msgstr "Stop Email"
+#~ 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/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 ""
+#~ msgid "No questions here. "
+#~ msgstr "answered question"
-#: 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
-msgid "select:"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_inbox.html:51
-msgid "seen"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_inbox.html:52
-msgid "new"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_inbox.html:53
-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_info.html:19
-msgid "remove"
-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 for"
-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
-msgid "user website"
-msgstr "website"
-
-#: skins/default/templates/user_profile/user_info.html:75
#, fuzzy
-msgid "location"
-msgstr "Hi, there! Please sign in"
+#~ msgid "resetting tags"
+#~ msgstr "Tags"
-#: 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 ""
+#~ 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/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 ""
+#~ msgid "Please, post your question!"
+#~ msgstr "Ask Your Question"
-#: skins/default/templates/user_profile/user_moderate.html:11
#, fuzzy
-msgid "User status changed"
-msgstr "User login"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/user_profile/user_moderate.html:20
-msgid "Save"
-msgstr ""
+#~ msgid "oldest answers"
+#~ msgstr "oldest"
-#: skins/default/templates/user_profile/user_moderate.html:26
-#, python-format
-msgid "Your current reputation is %(reputation)s points"
-msgstr ""
+#~ msgid "newest answers"
+#~ msgstr "newest"
-#: skins/default/templates/user_profile/user_moderate.html:28
-#, python-format
-msgid "User's current reputation is %(reputation)s points"
-msgstr ""
+#~ msgid "popular answers"
+#~ msgstr "most voted"
-#: skins/default/templates/user_profile/user_moderate.html:32
#, fuzzy
-msgid "User reputation changed"
-msgstr "user karma"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/user_profile/user_moderate.html:39
-msgid "Subtract"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_moderate.html:44
-#, python-format
-msgid "Send message to %(username)s"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_moderate.html:45
-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:47
#, fuzzy
-msgid "Message sent"
-msgstr "years old"
-
-#: skins/default/templates/user_profile/user_moderate.html:65
-msgid "Send message"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_moderate.html:75
-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:78
-msgid ""
-"Moderators have the same privileges as administrators, but cannot add or "
-"remove user status of 'moderator' or 'administrator'."
-msgstr ""
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Login/Signup to Post"
-#: skins/default/templates/user_profile/user_moderate.html:81
-msgid "'Approved' status means the same as regular user."
-msgstr ""
-
-#: skins/default/templates/user_profile/user_moderate.html:84
#, 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:87
-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 ""
+#~ msgid "Your answer"
+#~ msgstr "oldest"
-#: 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:31
#, fuzzy
-msgid "activity"
-msgstr "activity"
-
-#: skins/default/templates/user_profile/user_recent.html:21
-#: 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 ""
-
-#: 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
-#, python-format
-msgid "<span class=\"count\">%(counter)s</span> Answer"
-msgid_plural "<span class=\"count\">%(counter)s</span> 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: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)"
-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 ""
+#~ 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</"
+#~ "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!"
-#: 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] ""
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Login/Signup to Post"
-#: skins/default/templates/user_profile/user_stats.html:99
-#, python-format
-msgid "<span class=\"count\">%(counter)s</span> Badge"
-msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-msgstr[0] ""
-msgstr[1] ""
+#~ msgid "Answer the question"
+#~ msgstr "Post Your Answer"
-#: skins/default/templates/user_profile/user_stats.html:122
#, fuzzy
-msgid "Answer to:"
-msgstr "Tips"
+#~ msgid "Question tools"
+#~ msgstr "Tags"
-#: 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:772
-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 reputation"
-msgstr "Graph of user karma"
-
-#: skins/default/templates/user_profile/user_tabs.html:23
-msgid "reputation history"
-msgstr "karma"
-
-#: skins/default/templates/user_profile/user_tabs.html:25
-msgid "questions that user is following"
-msgstr ""
+#~ 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/user_profile/user_tabs.html:29
#, fuzzy
-msgid "recent activity"
-msgstr "activity"
-
-#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:847
-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_tabs.html:40 views/users.py:960
-msgid "email subscription settings"
-msgstr ""
-
-#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:224
-msgid "moderate this user"
-msgstr ""
+#~ 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/user_profile/user_votes.html:4
#, fuzzy
-msgid "votes"
-msgstr "votes"
+#~ msgid "email the updates"
+#~ msgstr "Last updated"
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "no"
+#~ msgid "question asked"
+#~ msgstr "Asked"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
-msgstr ""
+#~ msgid "question was seen"
+#~ msgstr "Seen"
-#: 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:32
-msgid "this field is required"
-msgstr ""
-
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "Choose screen name"
+#~ msgid "last updated"
+#~ msgstr "Last updated"
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr ""
-
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-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"
-msgstr ""
-
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
-msgstr ""
-
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
-msgstr ""
+#, fuzzy
+#~ msgid "Related questions"
+#~ msgstr "Tags"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Your email <i>(never shared)</i>"
+#~ 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"
-#: utils/forms.py:119
-msgid "email address is required"
-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"
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr ""
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr ""
+#~ "<strong>Notify me</strong> immediately when there are any new answers or "
+#~ "updates"
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
-msgstr ""
+#~ 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)"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Password"
+#~ 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."
-#: utils/forms.py:150
-msgid "password is required"
-msgstr ""
+#, fuzzy
+#~ msgid "change picture"
+#~ msgstr "Retag question"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Password <i>(please retype)</i>"
+#, fuzzy
+#~ msgid "Screen Name"
+#~ msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr ""
+#, fuzzy
+#~ msgid "Update"
+#~ msgstr "date"
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
-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."
-#: utils/functions.py:74
-msgid "2 days ago"
-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."
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr ""
+#~ msgid "Stop sending email"
+#~ msgstr "Stop Email"
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+#~ msgid "followed questions"
+#~ msgstr "Ask Your Question"
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] ""
-msgstr[1] ""
+#~ msgid "member for"
+#~ msgstr "member since"
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
-msgstr ""
+#~ msgid "user website"
+#~ msgstr "website"
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
-msgstr ""
+#, fuzzy
+#~ msgid "location"
+#~ msgstr "Hi, there! Please sign in"
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
-msgstr ""
+#~ msgid "age unit"
+#~ msgstr "years old"
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "Sorry, anonymous users cannot vote"
+#, fuzzy
+#~ msgid "todays unused votes"
+#~ msgstr "votes"
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
-msgstr ""
+#, fuzzy
+#~ msgid "moderation"
+#~ msgstr "karma"
-#: views/commands.py:65
-#, python-format
-msgid "You have %(votes_left)s votes left for today"
-msgstr ""
+#, fuzzy
+#~ msgid "User status changed"
+#~ msgstr "User login"
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
+#, fuzzy
+#~ msgid "User reputation changed"
+#~ msgstr "user karma"
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
-msgstr ""
+#, fuzzy
+#~ msgid "Message sent"
+#~ msgstr "years old"
-#: views/commands.py:207
-msgid "Sorry, but anonymous users cannot accept answers"
-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."
-#: 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>"
+#, fuzzy
+#~ msgid "activity"
+#~ msgstr "activity"
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr ""
+#, fuzzy
+#~ msgid "Answer to:"
+#~ msgstr "Tips"
-#: views/commands.py:400
-#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
-msgstr ""
+#, fuzzy
+#~ msgid "User profile"
+#~ msgstr "User login"
-#: views/commands.py:409
-#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
-msgstr ""
+#~ msgid "graph of user reputation"
+#~ msgstr "Graph of user karma"
-#: views/commands.py:542
-msgid "Please sign in to vote"
-msgstr ""
+#~ msgid "reputation history"
+#~ msgstr "karma"
-#: views/meta.py:83
-msgid "Q&A forum feedback"
-msgstr ""
+#, fuzzy
+#~ msgid "recent activity"
+#~ msgstr "activity"
-#: views/meta.py:84
-msgid "Thanks for the feedback!"
-msgstr ""
+#~ msgid "casted votes"
+#~ msgstr "votes"
-#: views/meta.py:92
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr ""
+#, fuzzy
+#~ msgid "votes"
+#~ msgstr "votes"
-#: 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] ""
+#~ msgid "answer tips"
+#~ msgstr "Tips"
-#: views/readers.py:440
-msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr ""
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr "ask a question interesting to this community"
-#: views/users.py:225
-msgid "moderate user"
-msgstr ""
+#, 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!"
-#: views/users.py:380
-msgid "user profile"
-msgstr ""
+#~ msgid "please try to provide details"
+#~ msgstr "provide enough details"
-#: views/users.py:381
-msgid "user profile overview"
-msgstr ""
+#, 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."
-#: views/users.py:685
-msgid "recent user activity"
-msgstr ""
+#~ msgid "Markdown tips"
+#~ msgstr "Markdown basics"
-#: views/users.py:686
-msgid "profile - recent activity"
-msgstr ""
+#, fuzzy
+#~ msgid "link"
+#~ msgstr "Hi, there! Please sign in"
-#: views/users.py:773
-msgid "profile - responses"
-msgstr ""
+#, fuzzy
+#~ msgid "ask a question"
+#~ msgstr "Ask Your Question"
-#: views/users.py:848
-msgid "profile - votes"
-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."
-#: views/users.py:883
-msgid "user reputation in the community"
-msgstr "user karma"
+#, 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. "
-#: views/users.py:884
-msgid "profile - user reputation"
-msgstr "Profile - User's Karma"
+#~ msgid "Login/signup to post your question"
+#~ msgstr "Login/Signup to Post"
-#: views/users.py:911
-msgid "users favorite questions"
-msgstr ""
+#~ msgid "Ask your question"
+#~ msgstr "Ask Your Question"
-#: views/users.py:912
-msgid "profile - favorite questions"
-msgstr ""
+#~ msgid "users"
+#~ msgstr "people"
-#: views/users.py:932 views/users.py:936
-msgid "changes saved"
-msgstr ""
+#~ msgid "question tips"
+#~ msgstr "Tips"
-#: views/users.py:942
-msgid "email updates canceled"
-msgstr ""
+#~ msgid "please ask a relevant question"
+#~ msgstr "ask a question interesting to this community"
-#: views/users.py:961
-msgid "profile - email subscriptions"
-msgstr ""
+#~ msgid "please try provide enough details"
+#~ msgstr "provide enough details"
-#: views/writers.py:58
-msgid "Sorry, anonymous users cannot upload files"
-msgstr ""
+#, fuzzy
+#~ msgid "see unanswered questions"
+#~ msgstr "Ask Your Question"
-#: views/writers.py:68
-#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr ""
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "Ask Your Question"
-#: views/writers.py:91
-#, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr ""
+#~ msgid "logout"
+#~ msgstr "sign out"
-#: views/writers.py:99
-msgid "Error uploading file. Please contact the site administrator. Thank you."
-msgstr ""
+#~ msgid "login"
+#~ msgstr "Hi, there! Please sign in"
-#: views/writers.py:191
#, fuzzy
-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 "settings"
+#~ msgstr "User login"
-#: views/writers.py:492
#, fuzzy
-msgid "Please log in to answer 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!"
-
-#: views/writers.py:598
-#, 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
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr ""
+#~ msgid "(please enter a valid email)"
+#~ msgstr "provide enough details"
-#: views/writers.py:654
-#, 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 "Question tags"
+#~ msgstr "Tags"
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
+#, fuzzy
+#~ msgid "questions"
+#~ msgstr "Tips"
#~ msgid ""
#~ "As a registered user you can login with your OpenID, log out of the site "
diff --git a/askbot/locale/en/LC_MESSAGES/djangojs.mo b/askbot/locale/en/LC_MESSAGES/djangojs.mo
index 674f4542..6f543394 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 3d39c7d3..46073a5e 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-10-08 02:25-0500\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"
@@ -17,49 +17,329 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: skins/default/media/js/post.js:532
-msgid "Follow"
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 "please enter at least one tag"
+
+#: skins/common/media/js/post.js:134
+msgid "content cannot be empty"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "sorry, you cannot accept your own answer"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "sorry, anonymous users cannot vote "
+
+#: skins/common/media/js/post.js:294
+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
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "are you sure you want to delete this?"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "sorry, anonymous users cannot delete or undelete posts"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "your post is now restored!"
+
+#: skins/common/media/js/post.js:299
+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/default/media/js/post.js:546
+#: 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
+msgid "add comment"
msgstr ""
-#: skins/default/media/js/post.js:1613
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+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
+msgid "enter url"
+msgstr "enter Web address, e.g. http://www.example.com \"page title\""
+
+#: skins/common/media/js/wmd/wmd.js:55
+msgid "upload file attachment"
+msgstr "Please choose and upload a file:"
+
+#: 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/es/LC_MESSAGES/django.mo b/askbot/locale/es/LC_MESSAGES/django.mo
index 05d737dc..01d8c83e 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 01a36f76..6d214740 100644
--- a/askbot/locale/es/LC_MESSAGES/django.po
+++ b/askbot/locale/es/LC_MESSAGES/django.po
@@ -139,11 +139,11 @@ msgstr ""
#: forms.py:341 const/__init__.py:245
msgid "approved"
-msgstr ""
+msgstr "aprobado"
#: forms.py:342 const/__init__.py:246
msgid "watched"
-msgstr ""
+msgstr "visto"
#: forms.py:343 const/__init__.py:247
#, fuzzy
@@ -152,7 +152,7 @@ msgstr "actualizado"
#: forms.py:344 const/__init__.py:248
msgid "blocked"
-msgstr ""
+msgstr "bloqueado"
#: forms.py:346
#, fuzzy
@@ -180,11 +180,11 @@ msgstr "no se puede votar por sus propias publicaciones"
#: forms.py:421
msgid "Cannot turn other user to moderator"
-msgstr ""
+msgstr "No tiene permitido habilitar a otros usuarios como moderadores"
#: forms.py:428
msgid "Cannot change status of another moderator"
-msgstr "No esta permitido cambiar el estado de otro moderador"
+msgstr "No tiene permitido cambiar el estado de otro moderador"
#: forms.py:434
#, fuzzy
@@ -200,7 +200,7 @@ msgstr ""
#: forms.py:449
msgid "Subject line"
-msgstr ""
+msgstr "Sujeto"
#: forms.py:456
msgid "Message text"
@@ -541,10 +541,6 @@ msgstr ""
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
-msgid "Prefix for the email subject line"
-msgstr ""
-
#: conf/email.py:24
msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
@@ -639,12 +635,12 @@ msgstr ""
#: conf/email.py:186
msgid "Require email verification before allowing to post"
-msgstr ""
+msgstr "Es requerida una verificación via email antes de poder publicar"
#: conf/email.py:187
msgid ""
"Active email verification is done by sending a verification key in email"
-msgstr ""
+msgstr "Se ha comenzado el proceso de verificación con una llave enviada a su correo electrónico"
#: conf/email.py:196
#, fuzzy
@@ -659,6 +655,10 @@ msgstr ""
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
+#: 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
msgid "Allow posting questions by email"
@@ -686,7 +686,7 @@ msgstr ""
#: conf/external_keys.py:18
msgid "Google site verification key"
-msgstr ""
+msgstr "Llave de verificación de Google site"
#: conf/external_keys.py:20
#, python-format
@@ -697,7 +697,7 @@ msgstr ""
#: conf/external_keys.py:35
msgid "Google Analytics key"
-msgstr ""
+msgstr "LLave de Googne Analytics"
#: conf/external_keys.py:37
#, python-format
@@ -708,7 +708,7 @@ msgstr ""
#: conf/external_keys.py:50
msgid "Enable recaptcha (keys below are required)"
-msgstr ""
+msgstr "Habilitar recaptcha (las llaves de abajo son requeridas)"
#: conf/external_keys.py:59
msgid "Recaptcha public key"
@@ -740,7 +740,7 @@ msgstr ""
#: conf/external_keys.py:96
msgid "Facebook secret key"
-msgstr ""
+msgstr "Llave privada de Facebook"
#: conf/external_keys.py:104
msgid "Twitter consumer key"
@@ -809,7 +809,7 @@ msgstr ""
#: conf/flatpages.py:17
msgid "Text of the Q&A forum About page (html format)"
-msgstr ""
+msgstr "Texto para la página de descripción del foro (formato html)"
#: conf/flatpages.py:20
msgid ""
@@ -818,8 +818,8 @@ msgid ""
msgstr ""
#: conf/flatpages.py:30
-msgid "Text of the Q&A forum FAQ page (html format)"
-msgstr ""
+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:33
msgid ""
@@ -827,10 +827,6 @@ msgid ""
"the \"faq\" page to check your input."
msgstr ""
-#: conf/flatpages.py:44
-msgid "Text of the Q&A forum Privacy Policy (html format)"
-msgstr ""
-
#: conf/flatpages.py:47
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
@@ -964,7 +960,7 @@ msgstr ""
#: conf/forum_data_rules.py:206
msgid "Minimum length of search term for Ajax search"
-msgstr ""
+msgstr "Tamaño minimo para terminos de búsqueda Ajax "
#: conf/forum_data_rules.py:207
msgid "Must match the corresponding database backend setting"
@@ -1164,7 +1160,7 @@ msgstr ""
#: conf/minimum_reputation.py:11
msgid "Minimum reputation required to perform actions"
-msgstr ""
+msgstr "Para realizar acciones es requerido una reputación mínima"
#: conf/minimum_reputation.py:20
#, fuzzy
@@ -1246,7 +1242,7 @@ msgstr "ver preguntas etiquetadas"
#: conf/minimum_reputation.py:164
msgid "Lock posts"
-msgstr ""
+msgstr "Bloquear entradas"
#: conf/minimum_reputation.py:173
msgid "Remove rel=nofollow from own homepage"
@@ -1458,7 +1454,7 @@ msgstr ""
#: conf/site_settings.py:56
msgid "Short name for your Q&A forum"
-msgstr ""
+msgstr "Nombre corto para tu foro"
#: conf/site_settings.py:66
msgid "Base URL for your Q&A forum, must start with http or https"
@@ -2487,7 +2483,7 @@ msgstr ""
#: deps/django_authopenid/views.py:575
msgid "Account recovery email sent"
-msgstr ""
+msgstr "Se envio el correo para recuperación de cuenta"
#: deps/django_authopenid/views.py:578
msgid "Please add one or more login methods."
diff --git a/askbot/locale/es/LC_MESSAGES/djangojs.mo b/askbot/locale/es/LC_MESSAGES/djangojs.mo
index 462417d2..6ac986e1 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 57d10b13..fd8df254 100644
--- a/askbot/locale/es/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/es/LC_MESSAGES/djangojs.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-08 02:25-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
"MIME-Version: 1.0\n"
@@ -17,49 +17,329 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+msgstr ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr "privilegio insuficiente"
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "no puede escoger su propia respuesta como la mejor"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr "por favor inicie sesión"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "usuarios anónimos no pueden votar"
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "por favor confirme ofensiva"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr "usuarios anónimos no pueden marcar publicaciones como ofensivas"
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "¿Está seguro que desea borrar esto?"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "usuarios anónimos no pueden borrar o recuperar publicaciones"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "publicación recuperada"
+
+#: skins/common/media/js/post.js:299
+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/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr "agregar comentario"
+
+#: skins/common/media/js/post.js:960
+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 ""
+
+#: 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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr "negrita"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "cursiva"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "enlace"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "citar"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "texto preformateado"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "imagen"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "lista numerada"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "lista no numerada"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "encabezado"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "barra horizontal"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "deshacer"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "rehacer"
+
+#: skins/common/media/js/wmd/wmd.js:53
+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
+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
+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/fi/LC_MESSAGES/django.mo b/askbot/locale/fi/LC_MESSAGES/django.mo
index cbd57018..da22aa13 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 c2627c0a..51db149c 100644
--- a/askbot/locale/fi/LC_MESSAGES/django.po
+++ b/askbot/locale/fi/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\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"
+"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: fi\n"
"X-Poedit-Language: Finnish\n"
"X-Poedit-Country: FINLAND\n"
"X-Poedit-SourceCharset: utf-8\n"
@@ -141,20 +141,20 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
#, fuzzy
msgid "suspended"
msgstr "päivitetty"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -163,7 +163,7 @@ msgstr ""
msgid "administrator"
msgstr "Terveisin ylläpito"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
#, fuzzy
msgid "moderator"
msgstr "hallitse-kayttajaa/"
@@ -213,460 +213,505 @@ msgid "Message text"
msgstr "Viestin sisältö:"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Nimi:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Sähköpostiosoite:"
+#, fuzzy
+msgid "Email:"
+msgstr "sähköposti"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Viesti:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "anonyymi"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "tämä sähköpostiosoite ei ole linkitetty gravatariin"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "Nimi"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Websivu"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Syntymäpäivä"
-#: forms.py:892
+#: forms.py:922
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:898
+#: forms.py:928
msgid "Profile"
msgstr "Profiili"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Tunnus"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "sähköpostiosoite on jo tietokannassa"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Kysyjänä minä"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Vastaajana minä"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Yksittäin valittu"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Koko keskustelupalsta (tagi-suodatettu)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "OK, koitetaan!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "ei sähköpostipäivityksiä"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "valitse yksi valinta seuraavista"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "sivusta/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "ukk/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "yksityisyys/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "vastaukset/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "muokkaa/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "revisiot/"
-#: 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: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/"
msgstr "kysymykset/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "kysy/"
-#: urls.py:88
+#: urls.py:92
#, fuzzy
msgid "retag/"
msgstr "tagit/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "sulje/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "avaa-uudelleen/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "vastaa/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "aanesta/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "tagit/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "kayttajat/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "kysymykset"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "kunniamerkit/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "viestit/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "merkkaa-luetuksi/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "laheta/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "palaute/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "kysymys/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "tunnus/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "nollataan tagit"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
#, fuzzy
msgid "Badge settings"
msgstr "nollataan tagit"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
#, fuzzy
msgid "Popular Question: minimum views"
msgstr "Suosittu kysymys"
-#: conf/badges.py:111
+#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
msgstr "Huomattava kysymys"
-#: conf/badges.py:120
+#: conf/badges.py:122
#, fuzzy
msgid "Famous Question: minimum views"
msgstr "Tunnettu kysymys"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "Suosikkikysymys"
-#: conf/badges.py:201
+#: conf/badges.py:203
#, fuzzy
msgid "Stellar Question: minimum stars"
msgstr "Tähtikysymys"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "Sähköposti ja sen asetukset"
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr "Tervetuloa"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "Vakio aikaväli sähköpostien lähetyksessä"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Vakio aikaväli sähköpostien lähetyksessä"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "Vakio aikaväli sähköpostien lähetyksessä"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Ei vastaamattomia kysymyksiä"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Ei vastaamattomia kysymyksiä"
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Ei vastaamattomia kysymyksiä"
+
+#: 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "Ei vastaamattomia kysymyksiä"
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr "Vaadi sähköpostiosoitteen tarkistus ennen hyväksyntää"
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr "Hyväksy vain yksi tunnus per sähköpostiosoite"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr "Sähköpostiosoite anonyymeille käyttäjille"
-#: conf/email.py:206
+#: conf/email.py:238
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"
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -676,42 +721,42 @@ 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:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Google Analytics -palvelun avain"
-#: conf/external_keys.py:37
+#: conf/external_keys.py:38
#, fuzzy, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
@@ -720,19 +765,19 @@ msgstr ""
"Hae <a href=\"%(ga_site)s\">Google Analytics</a> -palvelun avain, jos haluat "
"käyttää sitä sivustollasi"
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr "Recaptcha-palvelun julkinen avain (public key)"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr "Recaptcha-palvelun yksityinen avain (private key)"
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -743,11 +788,11 @@ msgstr ""
"suositeltavaa. Saat avaimen osoitteesta <a href=\"http://recaptcha.net"
"\">recaptcha.net</a>."
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr "Facebook-rajapinnan julkinen avain (public key)"
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -755,92 +800,92 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr "Facebook-rajapinnan salainen avain (secret key)"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "Vaihda salasanasi"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr "Teksti sivuston tietoa-sivua varten (HTML-muodossa)"
-#: 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 ""
"Tallenna ja <a href=\"http://validator.w3.org/\">validoi</a> tietoa-sivu"
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr "Teksti sivuston tietoa-sivua varten (HTML-muodossa)"
-#: conf/flatpages.py:33
+#: conf/flatpages.py:35
#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
@@ -848,46 +893,46 @@ msgid ""
msgstr ""
"Tallenna ja <a href=\"http://validator.w3.org/\">validoi</a> tietoa-sivu"
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr "Teksti yksityisyyttä koskevaa sivua varten (HTML-muodossa)"
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr "Yhteisölle jaettu -toiminto päälle"
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -895,225 +940,224 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Post Your Answer"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "Maksimi tagin koko merkkeinä"
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "päivitetyt tagit"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tagit"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr "Maksimi määrä tageja per kysymys"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr "Kysymyksien määrä sivulla vakiona"
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr "Mitä \"vastaamattomien kysymysten\" tulisi tarkoittaa?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "nollataan tagit"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "takaisin kotisivulle"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1121,43 +1165,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1166,11 +1210,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1180,163 +1224,163 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "Pienin äänimäärä, jollavoi suorittaa toimenpiteitä"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr ""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr ""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Vastaa omaan kysymykseesi"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "muokkaa mitä tahansa vastausta"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "Merkkaa loukkaavaksi"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr "Jätä kommentteja"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "Poista muiden kommentteja"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
#, fuzzy
msgid "Delete questions and answers posted by others"
msgstr "Sulje muiden kysymyksiä"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr "Lähetä tiedostoja"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr "Sulje oma kysymys"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr "Uudelleentagita muiden postauksia"
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr "Uudelleenavaa oma kysymys"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr "Muokkaa yhteisölle omistettuja postauksia"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr "Muokkaa muiden postauksia"
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr "Näytä loukkaavat merkit"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr "Sulje muiden kysymyksiä"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "Lukitse postauksia"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
+#: conf/reputation_changes.py:13
#, fuzzy
-msgid "Reputation loss and gain rules"
+msgid "Karma loss and gain rules"
msgstr "Maineen lisäämiseen ja poistamiseen liittyvät säännöt"
-#: conf/reputation_changes.py:21
+#: 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ä"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr "Lisää saamalla ääniä"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr "Lisää vastaajalle hyväksytystä vastauksesta"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr "Lisää valitsemalla paras vastaus"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1344,44 +1388,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1389,52 +1433,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "Profiili"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tagit"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "Liittyvät kysymykset"
-#: conf/sidebar_question.py:63
+#: 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"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Sivustot"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1442,53 +1487,53 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr ""
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr "Pilkulla erotellut hakusanat sivustoa varten"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr "Sivuston kuvaus hakurobotteja varten"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr "Lyhyt nimi sivustolle"
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr "Sähköpostiosoite anonyymeille käyttäjille"
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
#, fuzzy
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr "Linkki, joka näytetään tervetuloviestissä tuntemattomalle käyttäjälle"
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "Palautesivun URL-osoite"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
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"
@@ -1607,34 +1652,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-#, fuzzy
-msgid "Skin and User Interface settings"
-msgstr "Sähköposti ja sen asetukset"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1642,40 +1686,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr "Valitse teema"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1687,11 +1731,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1700,21 +1744,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1723,21 +1767,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1746,19 +1790,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1769,65 +1813,86 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Avaa tämä kysymys uudelleen"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "External Services"
+msgstr "Muut palvelut"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr ""
@@ -1835,71 +1900,77 @@ msgstr ""
"käyttäjiä. Sinulla tulee olla keksit päällä selaimessasi, jotta sivusto "
"toimii."
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr "Hyväksy tunnuksen nimen muokkaaminen"
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Hyväksy vain yksi tunnus per sähköpostiosoite"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr "Minimi tunnuksen pituus"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
#, fuzzy
msgid "Name for the Anonymous user"
msgstr "Sähköpostiosoite anonyymeille käyttäjille"
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr "Käyttäjän äänimäärä päivittäin"
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "duplikaattikysymys"
@@ -2001,192 +2072,197 @@ msgstr "Ei vastauksia"
msgid "Question has no accepted answers"
msgstr "Kysymyksellä ei ole hyväksyttyjä vastauksia"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "kysyi kysymyksen"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "vastasi"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "kommentoi kysymystä"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "kommentoi vastausta"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "muokasi kysymystä"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "muokkasi vastausta"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "sai arvomerkin"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "merkitty parhaaksi vastaukseksi"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "perui äänen"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "poisti kysymyksen"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "poisti vastauksen"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "merkitsi loukkaavaksi"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "päivitetyt tagit"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "valitsi suosikiksi"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "täydensi käyttäjäprofiilin"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "sähköpostipäivitys lähetettiin käyttäjälle"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "näytä vastaamattomat kysymykset"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "Lisää valitsemalla paras vastaus"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "mainittu postauksessa"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "vastasi"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "kommentoi"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "vastausta kommentoitu"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "vastaus hyväksytty"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[suljettu]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[poistettu]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "ensimmäinen versio"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "uudelleentagitettu"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "jätetty huomioitta"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "Yksittäin valittu"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "päivittäin"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "viikottain"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "ei sähköpostia"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "eilen"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "kulta"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "hopea"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "bronssi"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2321,7 +2397,7 @@ msgid "Incorrect username."
msgstr "Virheellinen tunnus"
#: 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:206
msgid "signin/"
msgstr "kirjautuminen/"
@@ -2455,74 +2531,74 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "Salasanasi vaihdettiin"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "Anna tunnuksellesi uusi salasana."
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2530,98 +2606,32 @@ msgstr ""
msgid "Site"
msgstr "Sivusto"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "hyväksytyt tiedostotyypit ovat '%(file_types)s'"
-#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
-msgid "Sites"
-msgstr "Sivustot"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-msgid "Documentation"
-msgstr "Dokumentaatio"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-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 ""
-
-#: 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:"
-
-#: 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 "Ei oikeuksia"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:68
-msgid "Setting groups"
-msgstr ""
-
-#: 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 ""
-
-#: 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 "Ryhmäasetukset: %(name)s"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:93
-msgid "Uncollapse all"
-msgstr "Luhista kaikki"
-
#: importers/stackexchange/management/commands/load_stackexchange.py:141
msgid "Congratulations, you are now an Administrator"
msgstr "Onnittelut, olet nyt pääkäyttäjä"
@@ -2649,15 +2659,15 @@ 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>"
+"<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>"
+"<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
@@ -2666,6 +2676,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "Ole ensimmäinen vastaaja!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "klikkaa nähdäksesi vanhimmat kysymykset"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2714,8 +2739,8 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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 "
@@ -2723,62 +2748,73 @@ msgstr ""
"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "Olet aina tervetullut kysymään!"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, 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"
-#: models/__init__.py:347
+#: models/__init__.py:353
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, 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"
msgstr "et voi äänestää omia postauksia"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "tarvitset >%(points)s points äänestämiseen "
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s mainetta tarvitaan"
-#: models/__init__.py:414
+#: models/__init__.py:428
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2786,7 +2822,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:415
+#: models/__init__.py:429
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2794,13 +2830,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:417
+#: models/__init__.py:431
#, 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:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
#, fuzzy
msgid "blocked users cannot post"
msgstr ""
@@ -2808,7 +2844,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
#, fuzzy
msgid "suspended users cannot post"
msgstr ""
@@ -2816,7 +2852,7 @@ 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:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2827,56 +2863,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2886,61 +2922,61 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
#, fuzzy
msgid "blocked users cannot flag posts"
msgstr ""
@@ -2948,7 +2984,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:749
+#: models/__init__.py:763
#, fuzzy
msgid "suspended users cannot flag posts"
msgstr ""
@@ -2956,145 +2992,146 @@ 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:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "vanhoja ääniä ei voi muuttaa"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "%(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, 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"
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, 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"
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "anonyymi"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr "Terveisin ylläpito"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
#, fuzzy
msgid "Suspended User"
msgstr "Lähettäjä on"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
#, fuzzy
msgid "Registered User"
msgstr "Rekisteröity käyttäjä"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "maineesi on %(reputation)s"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3103,10 +3140,10 @@ msgstr[0] ""
"<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."
+"Obtaining silver badge requires significant patience. If you have received "
+"%(count)d, that means you have greatly contributed to this community."
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3115,49 +3152,38 @@ msgstr[0] ""
msgstr[1] ""
"Jos olet aktiivinen osallistuja sivustolla, saat tämän kunniamerkin."
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "Tagit"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "tämä kysymys valittiin suosikiksi"
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3427,54 +3453,65 @@ msgstr "Ekspertti"
msgid "Very active in one tag"
msgstr "Aktiivinen yhden tagin alla"
-#: models/meta.py:112
+#: models/content.py:549
+#, fuzzy
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr "tämä kysymys valittiin suosikiksi"
+
+#: 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
+#, fuzzy
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "tämä kysymys valittiin suosikiksi"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "Ota selvää"
-#: models/question.py:452
-#, fuzzy
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "tämä kysymys valittiin suosikiksi"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s muokkasi kysymystä"
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s kommentoi kysymystä"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s kommentoi vastauksia"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s kommentoi vastausta"
@@ -3487,8 +3524,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3543,6 +3580,77 @@ msgstr "Viikottain"
msgid "No email"
msgstr "Ei sähköpostia"
+#: 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 "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:"
+
+#: 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ä:"
+
+#: 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 "Terveisin 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 ""
+
+#: 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"
+"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
+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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "no"
@@ -3721,138 +3829,117 @@ msgstr ""
msgid "Please sign in to vote"
msgstr "Kirjaudu täällä:"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "kysymys ja vastaus -keskustelupalstan palaute"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Kiitos palautteestasi!"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:131
+#: 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ä"
-#: views/readers.py:139
+#: 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ä"
-#: views/readers.py:177
+#: 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ä"
-#: views/readers.py:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "aanesta"
-msgstr[1] "aanesta"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "vastaus"
-msgstr[1] "vastaus"
-
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "katselut"
-msgstr[1] "katselut"
-
-#: views/readers.py:440
+#: 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"
-#: views/users.py:224
+#: views/users.py:211
#, fuzzy
msgid "moderate this user"
msgstr "Hallitse tätä käyttäjää"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "hallitse-kayttajaa/"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "käyttäjäprofiili"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "käyttäjäprofiilin yhteenveto"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "viimeisimmät"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "profiili - viimeisimmät"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "kommentteja ja vastauksia muihin kysymyksiin"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "profiili - vastaukset"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "äänihistoria"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "profiili - äänet"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "user karma"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "Profiili - äänet"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "käyttäjien suosikit"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "profiili - suosikkikysymykset"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "muutokset talletettu"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "sähköpostipäivitykset peruttu"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr ""
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "profiili - sähköpostitilaukset"
@@ -3911,6 +3998,444 @@ msgstr ""
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"
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "Muokkaa sivuston asetuksia"
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "Ryhmäasetukset: %(name)s"
+
+#~ msgid "Uncollapse all"
+#~ msgstr "Luhista kaikki"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Syötä käyttäjätunnus ja salasana"
+
+#, 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 "Save Email"
+#~ msgstr "Tallenna sähköpostiosoite"
+
+#~ msgid "Cancel"
+#~ msgstr "Peruuta"
+
+#~ msgid "Validate email"
+#~ msgstr "Tarkistuta sähköpostiosoite"
+
+#~ 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"
+
+#~ 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 "Email changed"
+#~ msgstr "Sähköposti muutettu"
+
+#~ 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 "Email verified"
+#~ msgstr "Sähköpostiosoite hyväksytty"
+
+#~ 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."
+
+#, 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>"
+
+#~ 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 "This account already exists, please use another."
+#~ msgstr "Tämä tunnus on jo käytössä."
+
+#~ msgid "Screen name label"
+#~ msgstr "Käyttäjätunnus"
+
+#~ msgid "Email address label"
+#~ msgstr "Sähköpostiosoite"
+
+#~ 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 "please select one of the options above"
+#~ msgstr "valitse yksi vaihtoehto"
+
+#~ msgid "create account"
+#~ msgstr "Luo tunnus"
+
+#~ msgid "Logout"
+#~ msgstr "Kirjaudu ulos"
+
+#~ msgid "User login"
+#~ msgstr "Kirjautuminen"
+
+#, 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 "Syötä käyttäjätunnus ja salasana"
+
+#, fuzzy
+#~ msgid "Login or email"
+#~ msgstr "ei sähköpostia"
+
+#~ msgid "Password"
+#~ msgstr "Salasana"
+
+#~ msgid "Login"
+#~ msgstr "Kirjautuminen"
+
+#, fuzzy
+#~ msgid "New password"
+#~ msgstr "Uusi salasana asetettu"
+
+#, fuzzy
+#~ msgid "Please, retype"
+#~ msgstr "anna salasana uudestaan"
+
+#, fuzzy
+#~ msgid "last used"
+#~ msgstr "nähty viimeksi"
+
+#~ msgid "delete"
+#~ msgstr "poista"
+
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "Tunnus poistettu."
+
+#, fuzzy
+#~ msgid "Still have trouble signing in?"
+#~ msgstr "Vieläkin kysymyksiä?"
+
+#, fuzzy
+#~ msgid "recover your account via email"
+#~ msgstr "Anna tunnuksellesi uusi salasana."
+
+#, fuzzy
+#~ msgid "Recover your account via email"
+#~ msgstr "Anna tunnuksellesi uusi salasana."
+
+#~ msgid "Why use OpenID?"
+#~ msgstr "Miksi käyttää OpenID:tä?"
+
+#~ 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."
+
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID on avoin standardi, jota käyttää moni yritys ja organisaatio."
+
+#~ msgid "Find out more"
+#~ msgstr "Ota selvää"
+
+#~ msgid "Get OpenID"
+#~ msgstr "Hanki OpenID"
+
+#~ msgid "Signup"
+#~ msgstr "Kirjaudu"
+
+#, fuzzy
+#~ msgid "Please register by clicking on any of the icons below"
+#~ msgstr "valitse yksi vaihtoehto"
+
+#, fuzzy
+#~ msgid "or create a new user name and password here"
+#~ msgstr "Luo tunnus ja salasana"
+
+#~ msgid "Create login name and password"
+#~ msgstr "Luo tunnus ja salasana"
+
+#~ 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 "Luo tunnus"
+
+#~ msgid "or"
+#~ msgstr "tai"
+
+#~ msgid "return to OpenID login"
+#~ msgstr "palaa OpenID-palvelun kirjautumiseen"
+
+#, fuzzy
+#~ msgid "add avatar"
+#~ msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "Vaihda tageja"
+
+#, fuzzy
+#~ msgid "Your current avatar: "
+#~ msgstr "Tunnuksen tiedot:"
+
+#, fuzzy
+#~ msgid "change avatar"
+#~ msgstr "muutokset talletettu"
+
+#, fuzzy
+#~ msgid "Upload"
+#~ msgstr "laheta/"
+
+#, fuzzy
+#~ msgid "delete avatar"
+#~ msgstr "poisti vastauksen"
+
+#, fuzzy
+#~ msgid "Delete These"
+#~ msgstr "poisti vastauksen"
+
+#~ msgid "answer permanent link"
+#~ msgstr "vastauksen linkki"
+
+#~ msgid "permanent link"
+#~ msgstr "pysyväislinkki"
+
+#~ msgid "edit"
+#~ msgstr "muokkaa"
+
+#~ msgid ""
+#~ "report as offensive (i.e containing spam, advertising, malicious text, "
+#~ "etc.)"
+#~ msgstr ""
+#~ "merkkaa loukkaavaksi (sisältää esim. roskapostia, mainostusta tai "
+#~ "loukkaavaa tekstiä)"
+
+#~ msgid "flag offensive"
+#~ msgstr "merkkaa loukkaavaksi"
+
+#~ msgid "undelete"
+#~ msgstr "palauta"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "Post Your Answer"
+
+#, fuzzy
+#~ msgid "mark this answer as correct (click again to undo)"
+#~ msgstr "merkitse suosikiksi (klikkaa uudestaan peruaksesi)"
+
+#, fuzzy
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "kysymyksen esittäjä on valinnut tämän vastauksen oikeaksi"
+
+#~ msgid "close date %(closed_at)s"
+#~ msgstr "sulkemispäivä %(closed_at)s"
+
+#, fuzzy
+#~ msgid "retag"
+#~ msgstr "uudelleentagitettu"
+
+#~ msgid "reopen"
+#~ msgstr "avaa uudelleen"
+
+#~ msgid "close"
+#~ msgstr "sulje"
+
+#, fuzzy
+#~ msgid "one of these is required"
+#~ msgstr "vaadittu kenttä"
+
+#~ msgid "(required)"
+#~ msgstr "(pakollinen)"
+
+#~ msgid "Toggle the real time Markdown editor preview"
+#~ msgstr "Reaaliaikainen Markdown-muokkain päälle/pois"
+
+#~ msgid "hide preview"
+#~ msgstr "piilota esikatselu"
+
+#~ msgid "Related tags"
+#~ msgstr "Tagit"
+
+#~ msgid "Interesting tags"
+#~ msgstr "Mielenkiintoiset tagit"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "Lisää"
+
+#~ msgid "Ignored tags"
+#~ msgstr "Hylätyt tagit"
+
#~ msgid "Sorry, could not find the page you requested."
#~ msgstr "Sivua ei löytynyt."
@@ -3975,12 +4500,6 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "Tallenna muokkaus"
-#~ msgid "Cancel"
-#~ msgstr "Peruuta"
-
-#~ msgid "hide preview"
-#~ msgstr "piilota esikatselu"
-
#~ msgid "show preview"
#~ msgstr "näytä esikatselu"
@@ -3998,6 +4517,10 @@ msgstr ""
#~ msgid "Badge \"%(name)s\""
#~ msgstr "%(date)s"
+#, fuzzy
+#~ msgid "%(description)s"
+#~ msgstr "kysymykset"
+
#~ msgid "user received this badge:"
#~ msgid_plural "users received this badge:"
#~ msgstr[0] "käyttäjä sai tämän kunniamerkin:"
@@ -4017,8 +4540,8 @@ 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"
+#~ "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 "
@@ -4223,10 +4746,6 @@ msgstr ""
#~ msgid "Give us your feedback!"
#~ msgstr "Anna meille palautettasi!"
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "syötä toimiva sähköpostiosoite"
-
#~ msgid "(this field is required)"
#~ msgstr "(tämä kenttä on pakollinen)"
@@ -4241,27 +4760,21 @@ msgstr ""
#~ msgstr "Avaa tämä kysymys uudelleen"
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "kunniamerkit:"
-
-#~ msgid "previous"
-#~ msgstr "edellinen"
-
-#~ msgid "current page"
-#~ msgstr "nykyinen sivu"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "sivu %(num)s"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "pidän tästä (klikkaa uudestaan peruaksesi)"
-#~ msgid "next page"
-#~ msgstr "seuraava sivu"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "pidän tästä vastauksesta (klikkaa uudestaan peruaksesi)"
-#~ msgid "posts per page"
-#~ msgstr "postia per sivu"
+#~ msgid "current number of votes"
+#~ msgstr "äänien määrä nyt"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "maineesi on %(reputation)s"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "en pidä tästä (klikkaa uudestaan peruaksesi)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "en pidä tästä vastauksesta (klikkaa uudestaan peruaksesi)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4285,13 +4798,17 @@ msgstr ""
#~ msgid "delete this comment"
#~ msgstr "poista kommentti"
-#~ msgid "edit"
-#~ msgstr "muokkaa"
-
#~ msgid "add comment"
#~ msgstr "lisää kommentti"
#, 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"
+
+#, fuzzy
#~ msgid "see <strong>%(counter)s</strong> more comment"
#~ msgid_plural ""
#~ "see <strong>%(counter)s</strong> more comments\n"
@@ -4301,14 +4818,23 @@ msgstr ""
#~ msgstr[1] "katso vielä <strong>%(counter)s</strong> kommenttia"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "vaadittu kenttä"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "maineesi on %(reputation)s"
-#~ msgid "(required)"
-#~ msgstr "(pakollinen)"
+#~ msgid "previous"
+#~ msgstr "edellinen"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Reaaliaikainen Markdown-muokkain päälle/pois"
+#~ msgid "current page"
+#~ msgstr "nykyinen sivu"
+
+#~ msgid "page number %(num)s"
+#~ msgstr "sivu %(num)s"
+
+#~ msgid "next page"
+#~ msgstr "seuraava sivu"
+
+#~ msgid "posts per page"
+#~ msgstr "postia per sivu"
#~ msgid "responses for %(username)s"
#~ msgstr "vastauksia käyttäjälle %(username)s"
@@ -4330,220 +4856,6 @@ msgstr ""
#~ msgid "Privacy policy"
#~ msgstr "Yksityisyydensuoja"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "pidän tästä (klikkaa uudestaan peruaksesi)"
-
-#~ msgid "current number of votes"
-#~ msgstr "äänien määrä nyt"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "en pidä tästä (klikkaa uudestaan peruaksesi)"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "uudelleentagitettu"
-
-#~ msgid "reopen"
-#~ msgstr "avaa uudelleen"
-
-#~ msgid "close"
-#~ msgstr "sulje"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "merkkaa loukkaavaksi (sisältää esim. roskapostia, mainostusta tai "
-#~ "loukkaavaa tekstiä)"
-
-#~ msgid "flag offensive"
-#~ msgstr "merkkaa loukkaavaksi"
-
-#~ msgid "undelete"
-#~ msgstr "palauta"
-
-#~ msgid "delete"
-#~ msgstr "poista"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "sulkemispäivä %(closed_at)s"
-
-#, 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 "popular answers"
-#~ msgstr "äänestetyimmät"
-
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "pidän tästä vastauksesta (klikkaa uudestaan peruaksesi)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "en pidä tästä vastauksesta (klikkaa uudestaan peruaksesi)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "merkitse suosikiksi (klikkaa uudestaan peruaksesi)"
-
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "kysymyksen esittäjä on valinnut tämän vastauksen oikeaksi"
-
-#~ msgid "answer permanent link"
-#~ msgstr "vastauksen linkki"
-
-#~ msgid "permanent link"
-#~ msgstr "pysyväislinkki"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "tai"
-
-#~ msgid "email"
-#~ msgstr "sähköposti"
-
-#~ 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 ""
-#~ "<strong>Notify me</strong> weekly 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 "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 "Login/Signup to Answer"
-#~ msgstr "Kirjaudu antaaksesi vastauksen"
-
-#~ msgid "Your answer"
-#~ msgstr "Vastauksesi"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Ole ensimmäinen vastaaja!"
-
-#~ 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 "Kirjaudu antaaksesi vastauksen"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Vastaa omaan kysymykseesi"
-
-#~ msgid "Answer the question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tagit"
-
-#, 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 "sähköpostipäivitykset peruttu"
-
-#~ msgid "Question tags"
-#~ msgstr "Tagit"
-
-#~ msgid "question asked"
-#~ msgstr "Kysytty"
-
-#~ msgid "question was seen"
-#~ msgstr "Nähty"
-
-#~ msgid "times"
-#~ msgstr "kertaa"
-
-#~ msgid "last updated"
-#~ msgstr "viimeksi päivitetty"
-
-#~ msgid "Related questions"
-#~ msgstr "Liittyvät kysymykset"
-
#~ msgid "Edit question"
#~ msgstr "Muokkaa kysymystä"
@@ -4560,6 +4872,10 @@ msgstr ""
#~ msgid "tag editors receive special awards from the community"
#~ msgstr "tagien muokkaajat saavat erikoispalkintoja yhteisöltä"
+#, fuzzy
+#~ msgid "up to 5 tags, less than 20 characters each"
+#~ msgstr "jokaisen tagin tulee olla vähintään %(max_chars)d merkin pituinen"
+
#~ msgid "Reopen question"
#~ msgstr "Uudelleenavaa kysymys"
@@ -4592,9 +4908,17 @@ msgstr ""
#~ msgid "Subscribe for tags"
#~ msgstr "käytä tageja"
+#, fuzzy
+#~ msgid "Subscribe"
+#~ msgstr "käytä tageja"
+
#~ msgid "Tag list"
#~ msgstr "Tagilista"
+#, fuzzy
+#~ msgid "Sort by &raquo;"
+#~ msgstr "Järjestys:"
+
#~ msgid "sorted alphabetically"
#~ msgstr "aakkosjärjestyksessä"
@@ -4625,570 +4949,234 @@ msgstr ""
#~ msgid "Nothing found."
#~ msgstr "Mitään ei löytynyt."
-#~ 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 "Save Email"
-#~ msgstr "Tallenna sähköpostiosoite"
-
-#~ msgid "Validate email"
-#~ msgstr "Tarkistuta sähköpostiosoite"
-
-#~ 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"
-
-#~ 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 "Email changed"
-#~ msgstr "Sähköposti muutettu"
-
-#~ 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 "Email verified"
-#~ msgstr "Sähköpostiosoite hyväksytty"
-
-#~ 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 "Search tips:"
+#~ msgstr "Hakuvinkkejä:"
-#~ 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 "reset author"
+#~ msgstr "nollaa tekijä"
#, 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>"
-
-#~ 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 " or "
+#~ msgstr "tai"
-#~ 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 "reset tags"
+#~ msgstr "nollaa tagit"
-#~ 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 "start over"
+#~ msgstr "aloita alusta"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Tämä tunnus on jo käytössä."
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
+#~ msgstr " laajentaaksesi tai lisää enemmän tageja hakuusi."
-#~ msgid "Screen name label"
-#~ msgstr "Käyttäjätunnus"
+#~ msgid "Search tip:"
+#~ msgstr "Hakuvinkki:"
-#~ msgid "Email address label"
-#~ msgstr "Sähköpostiosoite"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "lisää tageja ja hakusanoja täsmentääksesi hakuasi"
-#~ 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 "There are no unanswered questions here"
+#~ msgstr "Ei vastaamattomia kysymyksiä"
-#~ msgid "please select one of the options above"
-#~ msgstr "valitse yksi vaihtoehto"
+#, fuzzy
+#~ msgid "No questions here. "
+#~ msgstr "Ei suosikkeja."
-#~ msgid "create account"
-#~ msgstr "Luo tunnus"
+#~ msgid "You can expand your search by "
+#~ msgstr "Voit laajentaa hakuasi seuraavasti"
-#~ msgid "Your account details are:"
-#~ msgstr "Tunnuksen tiedot:"
+#~ msgid "resetting author"
+#~ msgstr "nollataan"
-#~ msgid "Username:"
-#~ msgstr "Käyttäjätunnus:"
+#~ msgid "resetting tags"
+#~ msgstr "nollataan tagit"
-#~ msgid "Password:"
-#~ msgstr "Salasana:"
+#~ msgid "starting over"
+#~ msgstr "aloitetaan alusta"
-#~ msgid "Please sign in here:"
-#~ msgstr "Kirjaudu täällä:"
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "Olet aina tervetullut kysymään!"
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr "Terveisin ylläpito"
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "Et löytänyt etsimääsi?"
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Terveiset"
+#~ msgid "Please, post your question!"
+#~ msgstr "Ole hyvä ja kysy kysymyksesi!"
-#~ msgid "Logout"
-#~ msgstr "Kirjaudu ulos"
+#, fuzzy
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "uudelleentaggaa kysymyksiä"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "valitse yksi vaihtoehto"
+#~ 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"
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "kirjautuminen/"
+#~ 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 "User login"
-#~ msgstr "Kirjautuminen"
+#, 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"
#, fuzzy
#~ msgid ""
#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
+#~ " %(counter)s Answer\n"
#~ " "
-#~ msgstr ""
+#~ 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>"
-
-#, 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</"
+#~ 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>"
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Syötä käyttäjätunnus ja salasana"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "ei sähköpostia"
-
-#~ msgid "Password"
-#~ msgstr "Salasana"
-
-#~ msgid "Login"
-#~ msgstr "Kirjautuminen"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "vanhimmat vastaukset näytetään ensin"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Uusi salasana asetettu"
+#~ msgid "oldest answers"
+#~ msgstr "vanhimmat vastaukset"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "anna salasana uudestaan"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "uusimmat vastaukset näytetään ensin"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "nähty viimeksi"
+#~ msgid "newest answers"
+#~ msgstr "uusimmat vastaukset"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Tunnus poistettu."
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "eniten ääniä saaneet vastaukset näytetään ensin"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Vieläkin kysymyksiä?"
+#~ msgid "popular answers"
+#~ msgstr "äänestetyimmät"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Anna tunnuksellesi uusi salasana."
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Vastaa omaan kysymykseesi"
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Anna tunnuksellesi uusi salasana."
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Kirjaudu antaaksesi vastauksen"
-#~ msgid "Why use OpenID?"
-#~ msgstr "Miksi käyttää OpenID:tä?"
+#~ msgid "Your answer"
+#~ msgstr "Vastauksesi"
-#~ msgid "with openid it is easier"
-#~ msgstr "With the OpenID you don't need to create new username and password."
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Ole ensimmäinen vastaaja!"
-#~ msgid "reuse openid"
+#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
+#~ "<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 "openid is widely adopted"
+#~ msgid "answer your own question only to give an answer"
#~ msgstr ""
-#~ "Maailmanlaajuisesti OpenID:tä käyttää yli 160 miljoonaa ihmistä. "
-#~ "Kymmenettuhannet sivustot käyttävät OpenID-palvelua kirjautumisessa "
-#~ "hyväkseen."
+#~ "<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 "openid is supported open standard"
+#~ msgid "please only give an answer, no discussions"
#~ msgstr ""
-#~ "OpenID on avoin standardi, jota käyttää moni yritys ja organisaatio."
-
-#~ msgid "Find out more"
-#~ msgstr "Ota selvää"
-
-#~ msgid "Get OpenID"
-#~ msgstr "Hanki OpenID"
+#~ "<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 "Signup"
-#~ msgstr "Kirjaudu"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Kirjaudu antaaksesi vastauksen"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "valitse yksi vaihtoehto"
+#~ msgid "Answer the question"
+#~ msgstr "Post Your Answer"
#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Luo tunnus ja salasana"
-
-#~ msgid "Create login name and password"
-#~ msgstr "Luo tunnus ja salasana"
-
-#~ 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 "Luo tunnus"
-
-#~ msgid "or"
+#~ msgid " or"
#~ msgstr "tai"
-#~ msgid "return to OpenID login"
-#~ msgstr "palaa OpenID-palvelun kirjautumiseen"
+#~ msgid "email"
+#~ msgstr "sähköposti"
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
+#~ msgid "Question tools"
+#~ msgstr "Tagit"
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Vaihda tageja"
+#~ msgid "click to unfollow this question"
+#~ msgstr "questions with most answers"
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Tunnuksen tiedot:"
+#~ msgid "click to follow this question"
+#~ msgstr "questions with most answers"
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "muutokset talletettu"
+#~ msgid "email the updates"
+#~ msgstr "sähköpostipäivitykset peruttu"
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "laheta/"
+#~ msgid "question asked"
+#~ msgstr "Kysytty"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "poisti vastauksen"
+#~ msgid "question was seen"
+#~ msgstr "Nähty"
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "poisti vastauksen"
+#~ msgid "times"
+#~ msgstr "kertaa"
-#~ msgid "answer tips"
-#~ msgstr "Vastausvinkkejä"
+#~ msgid "last updated"
+#~ msgstr "viimeksi päivitetty"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "vastaus käsittelee tämän sivuston aihealuita"
+#~ msgid "Related questions"
+#~ msgstr "Liittyvät kysymykset"
-#~ msgid "try to give an answer, rather than engage into a discussion"
+#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
-#~ "yritä vastata kysymykseen mielummin, kuin että osallistut keskusteluun"
-
-#~ msgid "please try to provide details"
-#~ msgstr "anna yksityiskohtia, sillä emme omista kristallipalloa"
-
-#~ msgid "be clear and concise"
-#~ msgstr "ole selkeä ja täsmällinen"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "katso usein kysytyt kysymykset"
+#~ "<strong>Notify me</strong> once a day by email when there are any new "
+#~ "answers or updates"
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown-vinkkejä"
+#~ 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 "*italic* or _italic_"
-#~ msgstr "*kursivointi* tai __kursivointi__"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**lihavointi** tai __lihavointi__"
-
-#~ msgid "link"
-#~ msgstr "linkki"
-
-#~ msgid "text"
-#~ msgstr "teksti"
-
-#~ msgid "image"
-#~ msgstr "kuva"
-
-#~ msgid "numbered list:"
-#~ msgstr "numeroitu lista:"
-
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "perus HTML-tagit ovat myös tuetut"
-
-#~ msgid "learn more about Markdown"
-#~ msgstr "opi lisää Markdownista"
-
-#~ msgid "login to post question info"
+#~ msgid "Notify me immediately when there are any new answers"
#~ 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."
+#~ "<strong>Notify me</strong> weekly when there are any new answers or "
+#~ "updates"
#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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 "Kirjaudu sisään kysyäksesi kysymyksesi"
-
-#~ msgid "Ask your question"
-#~ msgstr "Kysy kysymyksesi"
-
-#, 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"
-
-#, 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"
-
-#, 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"
-
-#~ msgid "about"
-#~ msgstr "sivusta"
-
-#~ msgid "privacy policy"
-#~ msgstr "yksityisyydensuoja"
-
-#~ msgid "give feedback"
-#~ msgstr "anna palautetta"
-
-#~ msgid "back to home page"
-#~ msgstr "takaisin kotisivulle"
-
-#~ msgid "questions"
-#~ msgstr "kysymykset"
-
-#~ msgid "users"
-#~ msgstr "käyttäjät"
-
-#~ msgid "badges"
-#~ msgstr "kunniamerkit"
-
-#~ msgid "ask a question"
-#~ msgstr "kysy kysymys"
-
-#~ msgid "logout"
-#~ msgstr "poistu"
-
-#~ msgid "login"
-#~ msgstr "kirjaudu"
-
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "nollataan tagit"
-
-#~ msgid "search"
-#~ msgstr "haku"
-
-#~ msgid "question tips"
-#~ msgstr "Vinkkejä kysymiseen"
-
-#~ msgid "please ask a relevant question"
-#~ msgstr "kysy kysymys mikä koskee aiheitamme"
-
-#~ msgid "please try provide enough details"
-#~ msgstr "kirjoita mahdollisimman paljon yksityiskohtia"
-
-#~ msgid "Interesting tags"
-#~ msgstr "Mielenkiintoiset tagit"
-
-#~ msgid "Add"
-#~ msgstr "Lisää"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Hylätyt tagit"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Et löytänyt etsimääsi?"
-
-#~ msgid "Please, post your question!"
-#~ msgstr "Ole hyvä ja kysy kysymyksesi!"
-
-#~ msgid "Search tips:"
-#~ msgstr "Hakuvinkkejä:"
-
-#~ msgid "reset author"
-#~ msgstr "nollaa tekijä"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "tai"
-
-#~ msgid "reset tags"
-#~ msgstr "nollaa tagit"
-
-#~ msgid "start over"
-#~ msgstr "aloita alusta"
-
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr " laajentaaksesi tai lisää enemmän tageja hakuusi."
-
-#~ msgid "Search tip:"
-#~ msgstr "Hakuvinkki:"
-
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "lisää tageja ja hakusanoja täsmentääksesi hakuasi"
-
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Ei vastaamattomia kysymyksiä"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Ei suosikkeja."
-
-#~ msgid "You can expand your search by "
-#~ msgstr "Voit laajentaa hakuasi seuraavasti"
-
-#~ msgid "resetting author"
-#~ msgstr "nollataan"
-
-#~ msgid "resetting tags"
-#~ msgstr "nollataan tagit"
-
-#~ msgid "starting over"
-#~ msgstr "aloitetaan alusta"
-
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "Olet aina tervetullut kysymään!"
-
-#~ msgid "Contributors"
-#~ msgstr "Ihmiset"
-
-#~ msgid "Related tags"
-#~ msgstr "Tagit"
-
-#~ msgid "In:"
-#~ msgstr "Näytä:"
-
-#~ msgid "see unanswered questions"
-#~ msgstr "näytä vastaamattomat kysymykset"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "näytä suosikit"
+#~ "(note: you can always <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
+#~ "updates)"
-#~ msgid "Sort by:"
-#~ msgstr "Järjestys:"
+#~ 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 "%(username)s's profile"
#~ msgstr "käyttäjän %(username)s profiili"
@@ -5215,6 +5203,15 @@ msgstr ""
#~ msgid "subscriptions"
#~ msgstr "kysymykset"
+#, 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> "
@@ -5235,6 +5232,11 @@ msgstr ""
#~ msgstr "kysymykset"
#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr ""
+#~ "käytä vähintään <span class=\"hidden\">%(tag_count)d</span>yhtä tagia"
+
+#, fuzzy
#~ msgid "select:"
#~ msgstr "poista"
@@ -5293,6 +5295,14 @@ msgstr ""
#~ msgstr "Paikka"
#, fuzzy
+#~ msgid "%(username)s's current status is \"%(status)s\""
+#~ msgstr "maineesi on %(reputation)s"
+
+#, fuzzy
+#~ msgid "User status changed"
+#~ msgstr "user karma"
+
+#, fuzzy
#~ msgid "Save"
#~ msgstr "Tallenna muokkaus"
@@ -5301,9 +5311,16 @@ msgstr ""
#~ msgstr "maineesi on %(reputation)s"
#, fuzzy
+#~ msgid "User's current reputation is %(reputation)s points"
+#~ msgstr "maineesi on %(reputation)s"
+
+#, fuzzy
#~ msgid "User reputation changed"
#~ msgstr "user karma"
+#~ msgid "Add"
+#~ msgstr "Lisää"
+
#, fuzzy
#~ msgid "Send message to %(username)s"
#~ msgstr "vastauksia käyttäjälle %(username)s"
@@ -5334,6 +5351,10 @@ msgstr ""
#~ msgid "Your karma change log."
#~ msgstr "äänihistoriasi."
+#, fuzzy
+#~ msgid "%(user_name)s's karma change log"
+#~ msgstr "äänihistoriasi."
+
#~ msgid "overview"
#~ msgstr "yhteenveto"
@@ -5347,6 +5368,10 @@ msgstr ""
#~ msgstr[0] "<span class=\"count\">%(counter)s</span> vastaus"
#~ msgstr[1] "<span class=\"count\">%(counter)s</span> vastausta"
+#, fuzzy
+#~ msgid "the answer has been voted for %(answer_score)s times"
+#~ msgstr "tämä vastaus on hyväksytty oikeaksi"
+
#~ msgid "this answer has been selected as correct"
#~ msgstr "tämä vastaus on valittu oikeaksi"
@@ -5363,6 +5388,10 @@ msgstr ""
#~ msgid "user has voted up this many times"
#~ msgstr "käyttäjä on äänestänyt tätä monta kertaa"
+#, 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"
@@ -5399,6 +5428,223 @@ msgstr ""
#~ 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 "be clear and concise"
+#~ msgstr "ole selkeä ja täsmällinen"
+
+#~ msgid "see frequently asked questions"
+#~ msgstr "katso usein kysytyt kysymykset"
+
+#~ msgid "Markdown tips"
+#~ msgstr "Markdown-vinkkejä"
+
+#, fuzzy
+#~ msgid "*italic* or _italic_"
+#~ msgstr "*kursivointi* tai __kursivointi__"
+
+#~ msgid "**bold** or __bold__"
+#~ msgstr "**lihavointi** tai __lihavointi__"
+
+#~ msgid "link"
+#~ msgstr "linkki"
+
+#~ msgid "text"
+#~ msgstr "teksti"
+
+#~ msgid "image"
+#~ msgstr "kuva"
+
+#~ msgid "numbered list:"
+#~ msgstr "numeroitu lista:"
+
+#~ msgid "basic HTML tags are also supported"
+#~ msgstr "perus HTML-tagit ovat myös tuetut"
+
+#~ msgid "learn more about Markdown"
+#~ msgstr "opi lisää Markdownista"
+
+#~ msgid "ask a question"
+#~ msgstr "kysy kysymys"
+
+#~ 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"
+#~ " "
+#~ 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 "Kirjaudu sisään kysyäksesi kysymyksesi"
+
+#~ msgid "Ask your question"
+#~ msgstr "Kysy kysymyksesi"
+
+#~ msgid "Contributors"
+#~ msgstr "Ihmiset"
+
+#~ msgid "about"
+#~ msgstr "sivusta"
+
+#~ msgid "privacy policy"
+#~ msgstr "yksityisyydensuoja"
+
+#~ msgid "give feedback"
+#~ msgstr "anna palautetta"
+
+#~ msgid "back to home page"
+#~ msgstr "takaisin kotisivulle"
+
+#~ msgid "users"
+#~ msgstr "käyttäjät"
+
+#~ msgid "badges"
+#~ msgstr "kunniamerkit"
+
+#~ msgid "question tips"
+#~ msgstr "Vinkkejä kysymiseen"
+
+#~ msgid "please ask a relevant question"
+#~ msgstr "kysy kysymys mikä koskee aiheitamme"
+
+#~ msgid "please try provide enough details"
+#~ msgstr "kirjoita mahdollisimman paljon yksityiskohtia"
+
+#, fuzzy
+#~ msgid "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "katselut"
+#~ msgstr[1] "katselut"
+
+#, fuzzy
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "vastaus"
+#~ msgstr[1] "vastaus"
+
+#, fuzzy
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "aanesta"
+#~ msgstr[1] "aanesta"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "näytä vastaamattomat kysymykset"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "näytä suosikit"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "kunniamerkit:"
+
+#~ msgid "logout"
+#~ msgstr "poistu"
+
+#~ msgid "login"
+#~ msgstr "kirjaudu"
+
+#, fuzzy
+#~ msgid "settings"
+#~ msgstr "nollataan tagit"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "syötä toimiva sähköpostiosoite"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "pidän tästä (klikkaa uudestaan peruaksesi)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "en pidä tästä (klikkaa uudestaan peruaksesi)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr "Tämä saattoi tapahtua seuraavista syistä:"
+
+#, 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 "mark this answer as favorite (click again to undo)"
+#~ msgstr "merkitse suosikiksi (klikkaa uudestaan peruaksesi)"
+
+#~ msgid "Question tags"
+#~ msgstr "Tagit"
+
+#~ msgid "questions"
+#~ msgstr "kysymykset"
+
+#~ msgid "search"
+#~ msgstr "haku"
+
+#~ msgid "In:"
+#~ msgstr "Näytä:"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "Kaikki kysymykset"
+
+#~ msgid "Sort by:"
+#~ msgstr "Järjestys:"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "Sähköpostiosoite:"
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "Pienin äänimäärä, jollavoi suorittaa toimenpiteitä"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "Sivustot"
+
+#, fuzzy
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "Sähköposti ja sen asetukset"
+
#~ msgid "community wiki"
#~ msgstr "yhteisön muokattavissa"
@@ -5990,9 +6236,6 @@ msgstr ""
#~ msgid "number of times"
#~ msgstr "kertaa"
-#~ msgid "the answer has been accepted to be correct"
-#~ msgstr "tämä vastaus on hyväksytty oikeaksi"
-
#~ msgid "%(rev_count)s revision"
#~ msgid_plural "%(rev_count)s revisions"
#~ msgstr[0] "%(rev_count)s revisiota"
@@ -6209,9 +6452,6 @@ msgstr ""
#~ "information in their profiles. Forum will never display such information "
#~ "without a request from the user."
-#~ msgid "Other Services"
-#~ msgstr "Muut palvelut"
-
#~ 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 "
diff --git a/askbot/locale/fi/LC_MESSAGES/djangojs.mo b/askbot/locale/fi/LC_MESSAGES/djangojs.mo
index 0be0e2e5..8bd6e6ab 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 78b1f23e..7e4cc734 100644
--- a/askbot/locale/fi/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/fi/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-10-08 02:26-0500\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"
@@ -17,49 +17,328 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 "anna vähintään yksi tagi"
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "et voi hyväksyä omaa vastaustasi parhaaksi"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta "
+
+#: skins/common/media/js/post.js:294
+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"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "oletko varma, että haluat poistaa tämän?"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "postauksesi on palautettu!"
+
+#: skins/common/media/js/post.js:299
+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/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+msgid "save comment"
+msgstr ""
+
+#: 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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+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
+msgid "enter url"
+msgstr "Anna URL-osoite, esim. http://www.example.com \"sivun otsikko\""
+
+#: 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 ""
+
+#: 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/fr/LC_MESSAGES/django.mo b/askbot/locale/fr/LC_MESSAGES/django.mo
index 1fe00ef0..b0a3103b 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 94d82b5f..72662e82 100644
--- a/askbot/locale/fr/LC_MESSAGES/django.po
+++ b/askbot/locale/fr/LC_MESSAGES/django.po
@@ -2,14 +2,14 @@ msgid ""
msgstr ""
"Project-Id-Version: Askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"X-Translated-Using: django-rosetta 0.5.3\n"
"Plural-Forms: nplurals=2; plural=(n>1);\n"
"X-Poedit-Language: French\n"
@@ -138,19 +138,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr "Saisissez le nombre de points à ajouter ou retirer"
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr "approuvée"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr "consultée"
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr "suspendu"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr "bloquée"
@@ -160,7 +160,7 @@ msgid "administrator"
msgstr "Administrateur du site"
# FIXME
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr "moderateur"
@@ -207,466 +207,512 @@ msgid "Message text"
msgstr "Corps du message"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Votre nom:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Votre email (ne sera pas communiqué):"
+#, fuzzy
+msgid "Email:"
+msgstr "email"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Votre message:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "être anonyme"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "Cet email ne doit pas être lié à Gravatar"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "Nom réel"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Site web"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Date de naissance"
-#: forms.py:892
+#: forms.py:922
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"
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr "Profil"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Pseudo"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
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"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "Choisissez un tag pour filtrer les emails"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Mes questions"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Questions auxquelles j'ai répondu"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Sélectionnées individuellement"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Forum entier (filtré par tag)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "Commentaires et messages me mentionnant"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "D'accord, j'essaye !"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "pas d'emails s'il vous plait, merci"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "Veuillez choisir une des options ci-dessus"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "apropos/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "faq/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "vieprivee/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "reponses/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "modifier/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "revisions/"
-#: 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: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/"
msgstr "questions/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "question/"
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr "requalification/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "fermer/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "reouvrir/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "repondre/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "voter/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "mots-cles/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "utilisateurs/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "Abonnements aux emails"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "Badges/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "messages/"
# FIXME
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "marques-pour-lecture/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "envoyer-sur-le-serveur/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "retour/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "question/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "compte/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "Paramétrage de la base de données"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
msgid "Badge settings"
msgstr "Paramétrage du badge"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr "Question populaire : nombre minimum de consultations"
-#: conf/badges.py:111
+#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
msgstr "Question remarquable"
-#: conf/badges.py:120
+#: conf/badges.py:122
#, fuzzy
msgid "Famous Question: minimum views"
msgstr "Question célèbre"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "Question favorite"
-#: conf/badges.py:201
+#: conf/badges.py:203
#, fuzzy
msgid "Stellar Question: minimum stars"
msgstr "Excellente question"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "Paramétrage des emails, et des alertes par email."
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr "Préfixe pour la ligne de sujet de l'email"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr "Nombre maximum de nouvelles dans une alerte par email"
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr ""
"Fréquence par défaut pour l'envoi des mails de notification de nouvelles"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr ""
"Fréquence par défaut pour l'envoi des mails de notification de nouvelles"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr ""
"Fréquence par défaut pour l'envoi des mails de notification de nouvelles"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Il n'y a aucune question sans réponse"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Il n'y a aucune question sans réponse"
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
#, fuzzy
msgid "Max. number of reminders to send about unanswered questions"
msgstr "Cliquez ici pour voir les questions ayant obtenu le plus de votes"
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Il n'y a aucune question sans 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "Il n'y a aucune question sans réponse"
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+#, fuzzy
+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"
+
+#: conf/email.py:218
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:187
+#: 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."
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr "N'autoriser qu'un compte par adresse email"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr "Faux email pour utilisateur anonyme"
-#: conf/email.py:206
+#: conf/email.py:238
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)"
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -678,32 +724,31 @@ msgstr ""
"des fonctionnalités de notre module de questions/réponses, qui repose sur un "
"principe communautaire."
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-"Clés pour connecter le site avec des services externes comme Facebook, etc."
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Clé de vérification de site Google"
-#: conf/external_keys.py:20
+#: conf/external_keys.py:21
#, fuzzy, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
@@ -713,11 +758,11 @@ msgstr ""
"votre site à <a href=\"%(google_webmasters_tools_url)s\">\"Google - Outils "
"pour les webmasters\"</a>"
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Clé Google Analytics"
-#: conf/external_keys.py:37
+#: conf/external_keys.py:38
#, fuzzy, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
@@ -727,19 +772,19 @@ msgstr ""
"Analytics</a>, si vous souhaitez utiliser Google Analytics pour mesurer "
"l'audience de votre site."
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr "Clé publique Recaptcha"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr "Clé privée Recaptcha"
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -752,11 +797,11 @@ msgstr ""
"connecter à votre site pour y publier automatiquement et massivement des "
"messages publicitaires."
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr "Clé d'API publique FACEBOOK"
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, fuzzy, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -768,81 +813,81 @@ msgstr ""
"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:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr "Clé secrète FACEBOOK"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "Explique comment changer le mot de passe LDAP"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Pages \"à propos\", \"vie privée\", etc."
-#: conf/flatpages.py:17
+#: 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"
-#: 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."
@@ -851,13 +896,13 @@ msgstr ""
"validateur HTML</a> sur la page \"à propos\" pour vérifier ce que vous avez "
"saisi."
-#: conf/flatpages.py:30
+#: 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"
-#: conf/flatpages.py:33
+#: conf/flatpages.py:35
#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
@@ -867,12 +912,12 @@ msgstr ""
"validateur HTML</a> sur la page \"à propos\" pour vérifier ce que vous avez "
"saisi."
-#: conf/flatpages.py:44
+#: 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"
-#: 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."
@@ -881,34 +926,34 @@ msgstr ""
"validateur HTML</a> sur la page \"vie privée\" pour vérifier ce que vous "
"avez saisi."
-#: conf/forum_data_rules.py:11
+#: conf/forum_data_rules.py:12
#, fuzzy
-msgid "Data entry and display"
+msgid "Data entry and display rules"
msgstr "Paramétrage de l'affichage et de la saisie de données"
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
"Cochez cette case pour activer la fonctionnalité \"wiki communautaire\""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
#, fuzzy
msgid "Allow posting before logging in"
msgstr ""
@@ -920,7 +965,7 @@ msgstr ""
"des fonctionnalités de notre module de questions/réponses, qui repose sur un "
"principe communautaire."
-#: 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 "
@@ -928,227 +973,226 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Répondre à cette question"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: 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"
# FXME ou "offensive" ?
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "Mots-clés"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags associés"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr "Nombre maximal de mots-clés (tags) par question"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr "Nombre de questions par défaut à afficher dans la liste "
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr "Que signifie \"questions sans réponses\" ?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "Paramétrage de la base de données"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "Retour à l'accueil"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
#, fuzzy
msgid "Use license logo"
msgstr "Logo du site de Questions/Réponses"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1156,43 +1200,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1201,11 +1245,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1215,175 +1259,175 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "Réputation minimale requise pour réaliser les actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr "vote positif"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr "vote négatif"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Répondre à votre propre question"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "\"modifier n'importe quelle réponse"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "Marquer comme 'contenu abusif'"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr "Ajouter un commentaire"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "Supprimer des commentaires publiés par d'autres utilisateurs"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr "Supprimer les questions et réponses publiées par d'autres"
# FIXME
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr "Transférer des fichiers sur notre serveur"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr "Cloturer ses propres questions"
-#: conf/minimum_reputation.py:110
+#: 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)"
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr "Réouvrir ses propres questions"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr "Modifier les messages sur le \"wiki communautaire\""
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr "Modifier les messages publiés par d'autres utilisateurs"
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr "Voir les drapeaux signalant des messages à contenu abusif"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr "Cloturer les questions posées par d'autres"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "Verrouiller des messages"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
+#: conf/reputation_changes.py:13
#, fuzzy
-msgid "Reputation loss and gain rules"
+msgid "Karma loss and gain rules"
msgstr "Règles concernant le gain et la perte de points de réputation"
-#: conf/reputation_changes.py:21
+#: 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"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr "Gain pour l'obtention d'un vote positif"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr "Gain pour l'auteur d'une réponse acceptée"
# FIXME ou "ayant reçu une récompense"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr "Gain pour accepter une meilleure réponse"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr "Gain pour le propriétaire d'un message en cas de vote négatif annulé"
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr "Gain pour un votant en cas de vote négatif annulé"
-#: conf/reputation_changes.py:76
+#: 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"
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr "Perte pour un auteur dont la réponse a été \"non-acceptée\""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr "Perte pour avoir donné un vote négatif"
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr "Perte pour l'auteur d'un message à contenu signalé 'abusif'"
-#: conf/reputation_changes.py:116
+#: 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"
-#: 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 ""
"Perte pour l'auteur d'un message qui a été marqué/étiqueté 3 fois dans une "
"même révision"
-#: 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 ""
"Perte pour l'auteur d'un message qui a été marqué/étiqueté 5 fois dans une "
"même révision"
-#: conf/reputation_changes.py:146
+#: 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é"
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1391,44 +1435,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1436,52 +1480,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "Profil utilisateur"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tags de la question"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "Questions liées"
-#: conf/sidebar_question.py:63
+#: 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"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Sites"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1489,58 +1534,58 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
-msgstr "Paramètres et URLs du forum de Questions/Réponses"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr "Titre du forum de Questions/Réponses"
-#: conf/site_settings.py:28
+#: 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)"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr "(c) 2010 - Tous droits réservés"
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr "Insérez ici la description du site, destinée aux moteurs de recherche"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
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:66
+#: conf/site_settings.py:68
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)"
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr "Faux email pour utilisateur anonyme"
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
#, fuzzy
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"
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "URL permettant de faire des remarques"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
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"
@@ -1654,35 +1699,35 @@ msgstr "Couleur d'arrière-plan pour les éléments acceptés"
msgid "Foreground color for accepted answer"
msgstr "Couleur de premier plan pour réponse acceptée"
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
-msgstr "Paramètrages du thème (skin) et de l'interface utilisateur"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr "Logo du site de Questions/Réponses"
-#: 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 ""
"Pour changer le logo, sélectionnez un nouveau fichier, puis soumettez le "
"formulaire complet."
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1690,23 +1735,23 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
"Afficher toutes les fonctionnalités de l'interface utilisateur à tous les "
"utilisateurs"
-#: conf/skin_general_settings.py:90
+#: 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 "
@@ -1717,19 +1762,19 @@ msgstr ""
"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:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr "Sélectionnez un thème (skin)"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1741,11 +1786,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1754,21 +1799,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1777,21 +1822,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1800,19 +1845,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1823,76 +1868,97 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr "Numéro de révision du thème"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Partager cette question sur twitter"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr "Partager cette question sur facebook"
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "External Services"
+msgstr "Autres services"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr "FIXME - User policy settings"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
"Autoriser la modification du pseudo (nom d'utilisateur affiché à l'écran)"
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr ""
@@ -1904,67 +1970,73 @@ msgstr ""
"des fonctionnalités de notre module de questions/réponses, qui repose sur un "
"principe communautaire."
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr "Taille minimale du pseudo (nom d'utilisateur affiché à l'écran)"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
#, fuzzy
msgid "Name for the Anonymous user"
msgstr "Faux email pour utilisateur anonyme"
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
-msgstr "Limites applicables aux votes et aux drapeaux de modération"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr "Nombre de votes qu'un utilisateur peut effectuer par jour"
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr "Nombre maximum de drapeaux par utilisateur et par jour"
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
"Seuil pour lancer un avertissement à propos des votes quotidiens restants"
-#: conf/vote_rules.py:49
+#: 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:58
+#: 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"
-#: conf/vote_rules.py:67
+#: 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"
-#: conf/vote_rules.py:76
+#: 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"
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "Question en doublon"
@@ -2080,199 +2152,205 @@ msgstr "Cette question n'a pas de réponse"
msgid "Question has no accepted answers"
msgstr "Cette question n'a pas de réponse acceptée"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "a posé une question"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "a répondu à une question"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "question commentée"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "réponse commentée"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "question modifiée"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "réponse modifiée"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "récompense obtenue"
# FIXME ou "ayant reçu une récompense"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "marquée comme meilleure réponse"
# FIXME ou "élue meilleure réponse"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "notée positivement"
# FIXME ou "ayant reçu un vote positif"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "notée négativement"
# FIXME ou "ayant reçu un vote négatif"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "vote annulé"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "question supprimée"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "réponse supprimée"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "signalée comme ayant un \"contenu abusif\""
# FXME ou "offensive" ?
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "Mots-clés"
# FIXME ou "marqueurs sémantiques mis à jour ?"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "sélectionnée comme \"favorite\""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "profil utilisateur entièrement renseigné"
# FIXME
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "Mise à jour d'email envoyée à l'utilisateur"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "Voir les questions sans réponses"
-#: const/__init__.py:143
+# FIXME ou "ayant reçu une récompense"
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "Gain pour accepter une meilleure réponse"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "mentionné dans le message"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "question_repondue"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "question_commentee"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "reponse_commentee"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "reponse_acceptee"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[close]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[supprimée]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "version initiale"
# FIXME
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "dont les mots-clés ont été révisés"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr "désactivé"
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr "exclure ceux ignorés"
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr "seulement ceux sélectionnés"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr "instantanément"
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "quotidien"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "hebdomadaire"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "Aucun email"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "hier"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "Qu'est ce que 'Gravatar' ?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "or"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "argent"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "bronze"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
#, fuzzy
msgid "Gravatar"
msgstr "Qu'est ce que 'Gravatar' ?"
-#: const/__init__.py:295
+#: const/__init__.py:300
#, fuzzy
msgid "Uploaded Avatar"
msgstr "Qu'est ce que 'Gravatar' ?"
@@ -2408,7 +2486,7 @@ msgid "Incorrect username."
msgstr "Nom d'utilisateur incorrect."
#: 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:206
msgid "signin/"
msgstr "connexion/"
@@ -2543,63 +2621,63 @@ msgstr ""
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:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "Votre mot de passe a été mis à jour."
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr "désolé, les 2 mots de passe sont différents, veuillez recommencer"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
@@ -2607,12 +2685,12 @@ msgstr ""
"id='validate_email_alert' href='%(details_url)s'>Cliquez ici</a> pour en "
"savoir plus."
-#: deps/django_authopenid/views.py:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "Changer le mot de passe de votre compte"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2620,100 +2698,32 @@ msgstr ""
msgid "Site"
msgstr "Site"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr "Paramétrage de la base de données"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr "Valeur par défaut: \"\""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr "Valeur par défaut: "
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr "Valeur par défaut: %s"
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Les types de fichiers image autorisés sont %(types)s"
-#: 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 "Documentation"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-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"
-
-#: 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 "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/group_settings.html:68
-msgid "Setting groups"
-msgstr "FIXME Setting groups"
-
-#: 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 le soptions de configurations doivent être modifiées dans le fichier "
-"settings.py du site"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:66
-#, python-format
-msgid "Group settings: %(name)s"
-msgstr "paramètres du groupe : %(name)s"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:93
-msgid "Uncollapse all"
-msgstr "Tout déplier"
-
#: importers/stackexchange/management/commands/load_stackexchange.py:141
msgid "Congratulations, you are now an Administrator"
msgstr "Félicitations, vous êtes maintenant administrateur"
@@ -2741,15 +2751,15 @@ 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>"
+"<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>"
+"<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
@@ -2758,6 +2768,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "Soyez le premier à répondre à cette quesion !"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "Cliquez ici pour voir les questions les moins récentes"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2822,21 +2847,26 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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"
+"emails de mises à jour, ou bien informez l'administrateur à l'adresse "
+"%(admin_email)s"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "Bitte einloggen"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
@@ -2844,7 +2874,7 @@ msgstr ""
"Désolé, vous ne pouvez pas accepter ou refuser les meilleures réponses car "
"votre compte est bloqué"
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
@@ -2852,7 +2882,7 @@ msgstr ""
"Désolé, vous ne pouvez pas accepter ou refuser les meilleures réponses car "
"votre compte est suspendu"
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
@@ -2861,47 +2891,53 @@ msgstr ""
"Désolé, vous ne pouvez pas accepter ou rejeter votre propre réponse à votre "
"propre question !"
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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 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 ""
"Désolé, seul l'auteur d'origine de la question - %(username)s - peut "
"accepter/désigner la meilleure réponse"
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "Il est interdit de voter pour ses propores publications"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr "Désolé, votre compte semble être bloqué"
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr "Désolé, votre compte semble être suspendu"
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ">%(points)s points sont requis pour pouvoir voter positivement"
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s points sont requis pour pouvoir voter négativement"
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr "Désolé, les utilisateurs bloqués ne peuvent pas transférer de fichier"
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr ""
"Désolé, les utilisateurs suspendus ne peuvent pas transférer de fichier"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
@@ -2909,15 +2945,15 @@ 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:436 models/__init__.py:503 models/__init__.py:918
+#: 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:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr "Les utilisateurs suspendus ne peuvent pas publier"
-#: models/__init__.py:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2928,7 +2964,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
#, fuzzy
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
@@ -2936,14 +2972,14 @@ msgstr ""
"et les modérateurs peuvent requalifier des questions supprimées (c'est à "
"dire modifier leurs mots-clés)"
-#: models/__init__.py:489
+#: 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:493
+#: models/__init__.py:507
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2953,7 +2989,7 @@ msgstr ""
"réputation est requis. Vous pouvez toutefois commenter vos propres "
"publications et répondre à vos questions"
-#: models/__init__.py:521
+#: models/__init__.py:535
#, fuzzy
msgid ""
"This post has been deleted and can be seen only by post owners, site "
@@ -2962,7 +2998,7 @@ 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:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2970,18 +3006,18 @@ 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:553
+#: models/__init__.py:567
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é"
-#: models/__init__.py:557
+#: models/__init__.py:571
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"
-#: models/__init__.py:562
+#: models/__init__.py:576
#, fuzzy, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
@@ -2989,16 +3025,16 @@ msgstr ""
"Désolé, pour modifier les messages du wiki, un minimum de %(min_rep)s points "
"de réputation est requis"
-#: models/__init__.py:569
+#: 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"
+"Désolé, pour éditer les messages des autres utilisateurs, un minimum de "
+"%(min_rep)s points de réputation est requis"
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -3012,48 +3048,48 @@ 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:647
+#: models/__init__.py:661
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é"
-#: models/__init__.py:651
+#: 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:655
+#: models/__init__.py:669
#, 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"
+"Désolé, pour supprimer les messages des autres utilisateurs, un minimum de "
+"%(min_rep)s points de réputation est requis"
-#: models/__init__.py:675
+#: models/__init__.py:689
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é"
-#: models/__init__.py:679
+#: models/__init__.py:693
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"
-#: models/__init__.py:683
+#: models/__init__.py:697
#, 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"
+"Désolé, pour cloturer les messages des autres utilisateurs, un minimum de "
+"%(min_rep)s points de réputation est requis"
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
@@ -3061,17 +3097,17 @@ msgstr ""
"Désolé, pour clore vos propres questions, un minimum de %(min_rep)s points "
"de réputation est requis"
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
"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:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
@@ -3079,31 +3115,31 @@ msgstr ""
"Désolé, pour réouvrir vos propres questions, un minimum de %(min_rep)s "
"points de réputation est requis"
-#: models/__init__.py:742
+#: 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:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr "Les utilisateurs bloqués ne peuvent pas étiqueter les messages"
-#: models/__init__.py:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr "Les utilisateurs suspendus ne peuvent pas étiqueter les messages"
-#: models/__init__.py:751
+#: models/__init__.py:765
#, 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"
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr "%(max_flags_per_day)s dépassé"
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3112,20 +3148,20 @@ msgstr ""
"et les modérateurs peuvent requalifier des questions supprimées (c'est à "
"dire modifier leurs mots-clés)"
-#: models/__init__.py:792
+#: models/__init__.py:806
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é"
-#: models/__init__.py:796
+#: 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:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
@@ -3133,20 +3169,20 @@ 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:819
+#: models/__init__.py:833
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é"
-#: models/__init__.py:823
+#: 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:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
@@ -3154,132 +3190,133 @@ msgstr ""
"réputation est requis"
# FIXME ou "ayant reçu un vote négatif"
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "impossible de révoquer un ancien vote"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "le %(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, 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"
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, 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"
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "anonyme"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr "Administrateur du site"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr "Modérateur de forum"
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr "Utilisateur suspendu"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr "Utilisateur bloqué"
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr "Utilisateur enregistré"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr "Utilisateurs suivis"
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr "Utilisateur certifié"
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "Votre karma est %(reputation)s"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "Badge argent - blah blah"
msgstr[1] "Badge argent - blah blah"
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "Badge bronze - blah blah"
msgstr[1] "Badge bronze - blah blah"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "Tags de la question"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3288,21 +3325,10 @@ msgstr ""
"Félicitations, vous avez reçu un badge '%(badge_name)s'. Consultez <a href="
"\"%(user_profile)s\">votre profil</a>."
-#: models/__init__.py:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "Désolé, cette question a été supprimée, et n'est plus accessible."
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3460,8 +3486,8 @@ 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"
+"A répondu à une question avec %(days)s jours de retard, et avec au moins "
+"%(votes)s votes"
#: models/badges.py:525
msgid "Necromancer"
@@ -3577,54 +3603,65 @@ msgstr "Expert"
msgid "Very active in one tag"
msgstr "Très actif dans une catégorie de questions"
-#: models/meta.py:112
+#: models/content.py:549
+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/content.py:572
+#, fuzzy
+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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "En savoir plus."
-#: models/question.py:452
-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/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s a modifié la question"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s a/ont commenté cette question"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s a/ont commenté des réponses"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s a/ont commenté une réponse"
@@ -3637,8 +3674,8 @@ msgstr "<em>Modifié par un modérateur. Motif :</em> %(reason)s"
#: models/repute.py:153
#, 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 points ont été accordés pour la contribution de %(username)s à la "
"question \"%(question_title)s\""
@@ -3696,6 +3733,92 @@ msgstr "hebdomadaire"
msgid "No email"
msgstr "Aucun email"
+#: 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:"
+
+#: 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 :"
+
+#: 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"
+
+#: 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."
+
+#: 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 ""
+"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é"
+
+#: skins/default/templates/feedback_email.txt:2
+#: skins/old/templates/feedback_email.txt:2
+#, fuzzy, 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"
+
+#: 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."
+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é"
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "0"
@@ -3885,139 +4008,121 @@ msgid "Please sign in to vote"
msgstr "Merci de vous authentifiez :"
# FIXME à vérifier
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr ""
"Vos remarques, critiques et suggestions sur notre forum de questions/réponses"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Merci pour vos remarques !"
-#: views/meta.py:92
+#: views/meta.py:94
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)"
-#: views/readers.py:131
+#: 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/readers.py:139
+#: views/readers.py:159
#, 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:177
+#: 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:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "vote"
-msgstr[1] "votes"
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "réponse"
-msgstr[1] "réponses"
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] "vue"
-msgstr[1] "vues"
-
-#: views/readers.py:440
+#: 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."
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr "Modérer cet utilisateur"
# FIXME
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr "utilisateur modéré"
# FIXME ou bien "Annulation des emails de notification de mises à jour" ???
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "profil de l'utilisateur"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "infOs générales sur le profil de l'utilisateur"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "activité récente de l'utilisateur"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "profil - activité récente"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "Commentaires et réponses à d'autres questions"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "profil - réactions"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "Trace des votes de cet utilisateur"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "profil - votes"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "réputation de l'utilisateur au sein de la communauté"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "profil - réputation de l'utilisateur"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "questions favorites des utilisateurs"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "profil - questions favorites"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "Modifications enregistrées."
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "Modification(s) d'email(s) annulée(s)"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "Paramètres d'abonnement aux emails"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "profil - abonnements emails"
@@ -4084,18 +4189,452 @@ msgid "sorry, we seem to have some technical difficulties"
msgstr ""
"Désolé, nous rencontrons apparemment des difficultés d'ordre techniques..."
+#~ msgid "Sites"
+#~ msgstr "Sites"
+
+#~ msgid "Documentation"
+#~ msgstr "Documentation"
+
+#~ msgid "Change password"
+#~ msgstr "Changer de mot de passe"
+
+#~ msgid "Log out"
+#~ msgstr "Déconnexion"
+
+#~ msgid "Home"
+#~ msgstr "Accueil"
+
+#~ msgid "Edit Group Settings"
+#~ msgstr "Modifier les paramétres des groupes"
+
+#~ 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 "Settings included in %(name)s."
+#~ msgstr "Paramètrages inclus dans %(name)s."
+
+#~ msgid "You don't have permission to edit values."
+#~ msgstr "Vous n'avez pas la permission de modifier ces valeurs"
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "Modifier le paramètrage du site"
+
+#~ msgid "Livesettings are disabled for this site."
+#~ msgstr "Les paramètrages \"en direct\" sont désactivés pour ce site"
+
#~ 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"
+#~ "All configuration options must be edited in the site settings.py file"
#~ msgstr ""
-#~ "Cette option définit la fréquence par défaut pour l'envoi par email des "
-#~ "mises à jour dans les cinq catégories suivantes : questions demandées par "
-#~ "l'utilisateur, auxquelles l'utilisateur a répondu, sélectionnées "
-#~ "individuellement, forum intégral (application d'un filtre de mots-clés "
-#~ "par personne) et messages mentionnant les réponses à l'utilisateur et les "
-#~ "réponses aux commentaires"
+#~ "Toutes le soptions de configurations doivent être modifiées dans le "
+#~ "fichier settings.py du site"
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "paramètres du groupe : %(name)s"
+
+#~ msgid "Uncollapse all"
+#~ msgstr "Tout déplier"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Veuillez saisir votre nom d'utilisateur et un mot de passe"
+
+#, fuzzy
+#~ msgid "(or select another login method above)"
+#~ msgstr "Merci de sélectionner une des options ci-dessus"
+
+#, fuzzy
+#~ msgid "Sign in"
+#~ msgstr "connexion/"
+
+#~ msgid "Change email"
+#~ msgstr "Changer d'email"
+
+#~ msgid "Save your email address"
+#~ msgstr "Sauvegarder votre adresse email"
+
+# 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 "
+#~ "pouvez désormais <strong>poser des questions</strong> et <strong>répondre "
+#~ "aux questions ouvertes</strong>. Vous pouvez également <strong>vous "
+#~ "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 "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "L'utilisateur %(username)s existe déjà; veuillez choisir un autre nom "
+#~ "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"
+#~ " "
+#~ 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"
+
+#~ 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 "
+#~ "chaque nouveau site que vous visitez, vous créez UNE FOIS POUR TOUTES un "
+#~ "compte \"OpenID\" chez le fournisseur de votre choix (Gmail, Yahoo, AOL, "
+#~ "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 "%(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."
@@ -4170,12 +4709,6 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "Enregistrer les modifications"
-#~ msgid "Cancel"
-#~ msgstr "Annuler"
-
-#~ msgid "hide preview"
-#~ msgstr "Masquer l'aperçu"
-
#~ msgid "show preview"
#~ msgstr "Afficher l'aperçu"
@@ -4212,8 +4745,8 @@ 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"
+#~ "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 "
@@ -4319,8 +4852,8 @@ 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 "
+#~ "- 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 "
@@ -4472,24 +5005,12 @@ msgstr ""
#~ "connaître votre avis sur notre module de Questions/Réponses.\n"
#~ "Saisissez vos remarques, critiques ou suggestions ci-dessous."
-#~ msgid "(please enter a valid email)"
-#~ msgstr "(veuillez entrer une adresse email valide)"
-
#~ msgid "(this field is required)"
#~ msgstr "(champ obligatoire)"
#~ msgid "Send Feedback"
#~ msgstr "Envoyer"
-#, fuzzy
-#~ 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"
-
#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
#~ msgstr "<p>Bonjour %(receiving_user_name)s,</p>"
@@ -4571,26 +5092,22 @@ msgstr ""
#~ msgid "Share this question on %(site)s"
#~ msgstr "Partager cette question sur twitter"
-#~ msgid "badges:"
-#~ msgstr "badges :"
-
-#~ msgid "previous"
-#~ msgstr "page précédente"
-
-#~ msgid "current page"
-#~ msgstr "page actuelle"
+#, fuzzy
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "J'aime ce message (cliquez à nouveau pour annuler)"
-#~ msgid "page number %(num)s"
-#~ msgstr "Page %(num)s"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "J'aime cette réponse (cliquez à nouveau pour annuler)"
-#~ msgid "next page"
-#~ msgstr "page suivante"
+#~ msgid "current number of votes"
+#~ msgstr "Nombre de votes actuel"
-#~ msgid "posts per page"
-#~ msgstr "messages par page"
+#, fuzzy
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "Je n'aime pas ce message (cliquez à nouveau pour annuler)"
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "Le site web de %(username)s est \"%(url)s"
+#~ 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"
@@ -4613,9 +5130,6 @@ msgstr ""
#~ msgid "delete this comment"
#~ msgstr "Supprimer ce commentaire"
-#~ msgid "edit"
-#~ msgstr "modifier"
-
#~ msgid "add comment"
#~ msgstr "Ajouter un commentaire"
@@ -4631,16 +5145,23 @@ msgstr ""
#~ msgstr[0] "Voir <strong>1</strong> commentaire de plus"
#~ msgstr[1] "Voir <strong>%(counter)s</strong> commentaires de plus"
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "ce champ est obligatoire"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "Le site web de %(username)s est \"%(url)s"
-#~ msgid "(required)"
-#~ msgstr "(obligatoire)"
+#~ msgid "previous"
+#~ msgstr "page précédente"
-# FIXME
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Basculer vers l'aperçu avec éditeur temps-réel"
+#~ 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"
@@ -4654,6 +5175,11 @@ msgstr ""
#~ 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"
@@ -4667,222 +5193,6 @@ msgstr ""
#~ msgid "Privacy policy"
#~ msgstr "Politique en matière de respect de la vie privée"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "J'aime ce message (cliquez à nouveau pour annuler)"
-
-#~ msgid "current number of votes"
-#~ msgstr "Nombre de votes actuel"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "Je n'aime pas ce message (cliquez à nouveau pour annuler)"
-
-# FIXME
-#~ msgid "retag"
-#~ msgstr "requalifier"
-
-#~ msgid "reopen"
-#~ msgstr "réouvrir"
-
-#~ msgid "close"
-#~ msgstr "fermer"
-
-#~ 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"
-
-#~ msgid "delete"
-#~ msgstr "Supprimer"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" 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"
-
-#, 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 "i like this answer (click again to cancel)"
-#~ msgstr "J'aime cette réponse (cliquez à nouveau pour annuler)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "Je n'aime pas cette réponse (cliquez à nouveau pour annuler)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr ""
-#~ "marquer cette réponse comme favorite (cliquez à nouveau pour annuler)"
-
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "%(question_author)s a choisi cette réponse comme correcte"
-
-#~ msgid "answer permanent link"
-#~ msgstr "lien permanent vers une réponse"
-
-#~ msgid "permanent link"
-#~ msgstr "lien permanent"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Répondre à cette question"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "ou"
-
-#~ msgid "email"
-#~ msgstr "email"
-
-#~ 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"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "Vous pourrez toujours ajuster la fréquence des emails de notification "
-#~ "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é"
-
-#, 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 à "
-#~ "cette question</span>, puis vous connecter ensuite "
-
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr ""
-#~ "vous pouvez répondre à vos propres questions uniquement pour donner une "
-#~ "réponse"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr ""
-#~ "Merci de vous contenter de donner une réponse; n'instaurez pas une "
-#~ "discussion"
-
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Connectez vous (ou Inscrivez vous) pour poster votre réponse"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Répondre à votre propre question"
-
-#~ msgid "Answer the question"
-#~ msgstr "Répondre à cette question"
-
-#, 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 tags"
-#~ msgstr "Tags de la question"
-
-#~ 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 "Edit question"
#~ msgstr "Modifier une question"
@@ -4944,9 +5254,17 @@ msgstr ""
#~ 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"
@@ -4980,605 +5298,235 @@ msgstr ""
#~ msgid "Nothing found."
#~ msgstr "Aucun résultat."
-#~ msgid "Change email"
-#~ msgstr "Changer d'email"
-
-#~ msgid "Save your email address"
-#~ msgstr "Sauvegarder votre adresse email"
-
-# FIXME
-#~ msgid "change %(email)s info"
-#~ msgstr "Informations concernant le changement d'email : %(email)s"
+#~ msgid "with %(author_name)s's contributions"
+#~ msgstr "avec la contribution de %(author_name)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 "Search tips:"
+#~ msgstr "Conseils pour la recherche:"
-#~ 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 "reset author"
+#~ msgstr "Réinitialiser l'auteur"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Votre adresse email</strong> (ne sera<strong>pas</strong> visible "
-#~ "des autres utilisateurs; et doit être valide)"
+#, fuzzy
+#~ msgid " or "
+#~ msgstr "ou"
-#~ msgid "Save Email"
-#~ msgstr "Sauvegarder l'email"
+#~ msgid "reset tags"
+#~ msgstr "Réinitialiser les tags"
-#~ msgid "Validate email"
-#~ msgstr "Valider l'email"
+#~ msgid "start over"
+#~ msgstr "Recommencer"
# 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"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
#~ 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."
+#~ " - pour développer ou restreindre en ajoutant plus de tags et en révisant "
+#~ "la requête"
-#~ msgid "thanks for verifying email"
-#~ msgstr ""
-#~ "<span class=\"big strong\">Merci d'avoir validé votre email.</span> Vous "
-#~ "pouvez désormais <strong>poser des questions</strong> et <strong>répondre "
-#~ "aux questions ouvertes</strong>. Vous pouvez également <strong>vous "
-#~ "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."
+#~ msgid "Search tip:"
+#~ msgstr "Conseil pour la recherche:"
-# FIXME
-#~ msgid "email key not sent"
-#~ msgstr "l'email comportant la clé de validation n'a pas été envoyé"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "ajouter des tags et une requête pour affiner votre recherche"
-#~ 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>."
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "Il n'y a aucune question sans réponse"
#, 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 %"
-#~ "(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "L'utilisateur %(username)s existe déjà; veuillez choisir un autre nom "
-#~ "pour \n"
-#~ " %(provider)s. Un email est aussi obligatoire, "
-#~ "cf. %(gravatar_faq_url)s"
+#~ msgid "No questions here. "
+#~ msgstr "Aucune question favorite."
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#, fuzzy
+#~ msgid "Please follow some questions or follow some users."
#~ 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>"
+#~ "Merci de commencer (marquer) quelques questions quand vous les visitez"
-#~ 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 "You can expand your search by "
+#~ msgstr "Vous pouvez élargir votre recherche en"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Ce compte existe déjà; merci d'en utiliser un autre."
+#~ msgid "resetting author"
+#~ msgstr "réinitialisant l'auteur"
-# FIXME
-#~ msgid "Screen name label"
-#~ msgstr "Pseudo"
+#~ msgid "resetting tags"
+#~ msgstr "réinitialisant les mots-clés (\"tags\")"
-# FIXME
-#~ msgid "Email address label"
-#~ msgstr "Adresse email"
+#~ msgid "starting over"
+#~ msgstr "repartant de zéro"
-#~ msgid "please select one of the options above"
-#~ msgstr "Merci de sélectionner une des options ci-dessus"
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "N'hésitez pas à poser des questions !"
-#~ 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 "Did not find what you were looking for?"
+#~ msgstr "Vous n'avez pas trouvé ce que vous cherchiez ?"
-#~ msgid "create account"
-#~ msgstr "Créer un compte"
+#~ msgid "Please, post your question!"
+#~ msgstr "Veuillez saisir votre question !"
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "Merci de vous être inscrit sur notre forum de Questions/Réponses !"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "S'abonner au flux RSS des questions"
#, fuzzy
-#~ msgid "Your account details are:"
-#~ msgstr "Informations détaillées sur votre compte:"
-
-#~ msgid "Username:"
-#~ msgstr "Nom d'utilisateur :"
-
-#~ msgid "Password:"
-#~ msgstr "Mot de passe :"
-
-#~ msgid "Please sign in here:"
-#~ msgstr "Merci de vous authentifiez :"
-
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr "L'administrateur du forum"
-
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Bienvenue dans notre forum de Questions/Réponses"
-
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr "Pour utiliser ce forum, utilisez le lien ci-dessous :"
-
-#~ 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."
-
-#~ 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 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 "Logout"
-#~ msgstr "Déconnexion"
+#~ 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 "(or select another login method above)"
-#~ msgstr "Merci de sélectionner une des options ci-dessus"
+#~ 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 "Sign in"
-#~ msgstr "connexion/"
-
-#~ msgid "User login"
-#~ msgstr "Veuillez vous authentifier avec votre \"OpenID\""
+#~ 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"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
+#~ " %(counter)s Answer\n"
#~ " "
-#~ msgstr ""
+#~ msgid_plural ""
#~ "\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"
+#~ " %(counter)s Answers\n"
#~ " "
-#~ 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"
-
-#~ msgid "Login"
-#~ msgstr "Connexion"
+#~ msgstr[0] ""
+#~ "\n"
+#~ " %(counter)s réponse :"
+#~ msgstr[1] ""
+#~ "\n"
+#~ " %(counter)s réponses :"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Nouveau mot de passe pris en compte."
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "Les réponses les plus anciennes seront affichées en premier"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "Merci de resaisir votre mot de passe"
+#~ msgid "oldest answers"
+#~ msgstr "réponses les plus anciennes"
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "Utilisateur certifié"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "Les réponses les plus récentes seront affichées en premier"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "dernière connexion"
+#~ msgid "newest answers"
+#~ msgstr "Réponses les plus récentes"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Compte supprimé."
+#~ msgid "most voted answers will be shown first"
+#~ msgstr ""
+#~ "Les réponses ayant obtenu le plus de votes seront affichées en premier"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "D'autres questions ?"
+#~ msgid "popular answers"
+#~ msgstr "réponses populaires"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Changer le mot de passe de votre compte"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Répondre à votre propre question"
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Changer le mot de passe de votre compte"
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Connectez vous (ou Inscrivez vous) pour poster votre réponse"
-#~ msgid "Why use OpenID?"
-#~ msgstr "Pourquoi utiliser OpenID ?"
+#~ msgid "Your answer"
+#~ msgstr "Votre réponse"
-#~ msgid "with openid it is easier"
-#~ msgstr "OpenID est le nouveau standard d’identification sur Internet."
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Soyez le premier à répondre à cette quesion !"
-#~ msgid "reuse openid"
+#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
-#~ "Le principe d'OpenID est simple : au lieu de créer un nouveau compte sur "
-#~ "chaque nouveau site que vous visitez, vous créez UNE FOIS POUR TOUTES un "
-#~ "compte \"OpenID\" chez le fournisseur de votre choix (Gmail, Yahoo, AOL, "
-#~ "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..."
+#~ "<span class='strong big'>Vous pouvez commencer par répondre anonymement à "
+#~ "cette question</span>, puis vous connecter ensuite "
-#~ msgid "openid is widely adopted"
+#~ msgid "answer your own question only to give an answer"
#~ 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."
+#~ "vous pouvez répondre à vos propres questions uniquement pour donner une "
+#~ "réponse"
-#~ msgid "Get OpenID"
-#~ msgstr "Obtenir un compte OpenID"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr ""
+#~ "Merci de vous contenter de donner une réponse; n'instaurez pas une "
+#~ "discussion"
-#~ msgid "Signup"
-#~ msgstr "S'enregistrer"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Connectez vous (ou Inscrivez vous) pour poster votre réponse"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Merci de sélectionner une des options ci-dessus"
+#~ msgid "Answer the question"
+#~ msgstr "Répondre à cette question"
#, 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"
+#~ 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' ?"
+#~ msgid "email"
+#~ msgstr "email"
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Modifier les tags"
+#~ msgid "Question tools"
+#~ msgstr "Tags de la question"
+# FIXME
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Informations détaillées sur votre compte:"
+#~ msgid "click to unfollow this question"
+#~ msgstr ""
+#~ "Cliquez ici pour voir les questions ayant obtenu le plus de réponses"
+# FIXME
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Modifications enregistrées."
+#~ msgid "click to follow this question"
+#~ msgstr ""
+#~ "Cliquez ici pour voir les questions ayant obtenu le plus de réponses"
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "envoyer-sur-le-serveur/"
+#~ msgid "email the updates"
+#~ msgstr "Modification(s) d'email(s) annulée(s)"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "réponse supprimée"
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "S'abonner au flux RSS des questions"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "réponse supprimée"
-
-# 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 "subsribe to rss feed"
+#~ msgstr "S'abonner au flux RSS des questions"
-#~ msgid "text"
-#~ msgstr "texte"
+#~ msgid "question asked"
+#~ msgstr "question posée"
-#~ msgid "image"
-#~ msgstr "image"
+#~ msgid "question was seen"
+#~ msgstr "la question a été vue:"
-#~ msgid "numbered list:"
-#~ msgstr "liste numérotée:"
+#~ msgid "times"
+#~ msgstr "fois"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "les balises HTML élémentaires sont aussi supportées."
+#~ msgid "last updated"
+#~ msgstr "dernière mise à jour"
-#~ msgid "learn more about Markdown"
-#~ msgstr "en savoir plus sur les balises \"Markdown\""
+#~ msgid "Related questions"
+#~ msgstr "Questions liées"
-#~ msgid "login to post question info"
+#~ msgid "Notify me once a day when there are any new answers"
#~ 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."
+#~ "<strong>Me notifier les nouvelles réponses par email</strong> une fois "
+#~ "par jour"
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#~ msgid "Notify me weekly when there are any new answers"
#~ msgstr ""
-#~ "<span class='strong big'>Ihre E-Mail-Adresse %(email)s wurde noch nicht "
-#~ "bestätigt.</span> Um Beiträge veröffentlichen zu können, müssen Sie Ihre "
-#~ "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"
-
-#, 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"
+#~ "<strong>Me notifier les nouvelles réponses par email</strong> une fois "
+#~ "par semaine"
#, 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"
+#~ 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"
-#, 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"
-
-#~ 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 "questions"
-#~ msgstr "questions"
-
-#~ msgid "users"
-#~ msgstr "Communauté"
-
-#~ msgid "badges"
-#~ msgstr "Réputation"
-
-#~ msgid "ask a question"
-#~ msgstr "Poser une question"
-
-#~ msgid "logout"
-#~ msgstr "Déconnexion"
-
-#~ msgid "login"
-#~ msgstr "Connexion"
-
-#~ msgid "settings"
-#~ msgstr "paramètres"
-
-#~ msgid "search"
-#~ msgstr "Chercher"
-
-#~ 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 "Interesting tags"
-#~ msgstr "Tags intéressants"
-
-#~ msgid "Add"
-#~ msgstr "Ajouter"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Tags ignorés"
-
-#~ msgid "Display tag filter"
-#~ msgstr "Filtre des tags"
-
-#~ 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"
-
-#~ msgid "rss feed"
-#~ msgstr "flux RSS"
-
-#~ 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."
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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."
+#~ "Vous pourrez toujours ajuster la fréquence des emails de notification "
+#~ "depuis <strong><a href='%(profile_url)s?sort=email_subscriptions'>votre "
+#~ "profil</a></strong> ...)"
-#, fuzzy
-#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
#~ 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 "Contributors"
-#~ msgstr "Contributeurs"
-
-#~ msgid "Related tags"
-#~ msgstr "Tags associés"
-
-# ##FIXME "In: [All questions] [Opened questions]"
-# ##FIXME "Dans: [toutes les questions] [questions ouvertes]"
-# ##FIXME "Questions: [toutes] [ouvertes]" POUR GAGNER DE LA PLACE !!!
-#~ msgid "In:"
-#~ msgstr "Questions:"
-
-#~ msgid "see unanswered questions"
-#~ msgstr "Voir les questions sans réponses"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "Voir vos questions favorites"
-
-#~ msgid "Sort by:"
-#~ msgstr "Trier par:"
+#~ "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"
@@ -5626,6 +5574,10 @@ msgstr ""
#~ msgstr "questions"
#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr "Veuillez utiliser %(tag_count)d mot-clé, ou moins"
+
+#, fuzzy
#~ msgid "select:"
#~ msgstr "Supprimer"
@@ -5653,6 +5605,10 @@ msgstr ""
#~ msgid "update profile"
#~ msgstr "Mettre à jour le profil"
+#, fuzzy
+#~ msgid "manage login methods"
+#~ msgstr "Bitte einloggen"
+
#~ msgid "real name"
#~ msgstr "nom réél"
@@ -5704,6 +5660,9 @@ msgstr ""
#~ msgid "Subtract"
#~ msgstr "Soustraire"
+#~ msgid "Add"
+#~ msgstr "Ajouter"
+
#~ msgid "Send message to %(username)s"
#~ msgstr "Envoyer un message à %(username)s"
@@ -5819,6 +5778,265 @@ msgstr ""
#~ 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"
+#~ " "
+#~ msgstr ""
+#~ "<span class='strong big'>Ihre E-Mail-Adresse %(email)s wurde noch nicht "
+#~ "bestätigt.</span> Um Beiträge veröffentlichen zu können, müssen Sie Ihre "
+#~ "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 "settings"
+#~ msgstr "paramètres"
+
+#~ msgid "(please enter a valid email)"
+#~ msgstr "(veuillez entrer une adresse email valide)"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "J'aime ce message (cliquez à nouveau pour annuler)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "Je n'aime pas ce message (cliquez à nouveau pour annuler)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr ""
+#~ "Cette question a été close pour la raison suivante : : \"%(close_reason)s"
+#~ "\" par"
+
+#, 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 "mark this answer as favorite (click again to undo)"
+#~ msgstr ""
+#~ "marquer cette réponse comme favorite (cliquez à nouveau pour annuler)"
+
+#~ msgid "Question tags"
+#~ msgstr "Tags de la question"
+
+#~ msgid "questions"
+#~ msgstr "questions"
+
+#~ msgid "search"
+#~ msgstr "Chercher"
+
+#~ msgid "rss feed"
+#~ msgstr "flux RSS"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr ""
+#~ "Merci de commencer (marquer) quelques questions quand vous les visitez"
+
+# ##FIXME "In: [All questions] [Opened questions]"
+# ##FIXME "Dans: [toutes les questions] [questions ouvertes]"
+# ##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"
+
+#~ msgid "Q&A forum website parameters and urls"
+#~ msgstr "Paramètres et URLs du forum de Questions/Réponses"
+
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "Paramètrages du thème (skin) et de l'interface utilisateur"
+
+#~ msgid "Limits applicable to votes and moderation flags"
+#~ msgstr "Limites applicables aux votes et aux drapeaux de modération"
+
+#~ msgid "Setting groups"
+#~ msgstr "FIXME Setting groups"
+
+#~ 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 ""
+#~ "Cette option définit la fréquence par défaut pour l'envoi par email des "
+#~ "mises à jour dans les cinq catégories suivantes : questions demandées par "
+#~ "l'utilisateur, auxquelles l'utilisateur a répondu, sélectionnées "
+#~ "individuellement, forum intégral (application d'un filtre de mots-clés "
+#~ "par personne) et messages mentionnant les réponses à l'utilisateur et les "
+#~ "réponses aux commentaires"
+
#~ msgid ""
#~ "If you change this url from the default - then you will also probably "
#~ "want to adjust translation of the following string: "
@@ -5967,8 +6185,8 @@ msgstr ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
#~ msgstr ""
-#~ "Informations concernant la procédure de validation d'email avec %"
-#~ "(send_email_key_url)s %(gravatar_faq_url)s"
+#~ "Informations concernant la procédure de validation d'email avec "
+#~ "%(send_email_key_url)s %(gravatar_faq_url)s"
#~ msgid "."
#~ msgstr "."
@@ -6019,8 +6237,8 @@ msgstr ""
#~ "see other questions with %(view_user)s's contributions tagged '%(tag_name)"
#~ "s' "
#~ msgstr ""
-#~ "voir d'autres questions de %(view_user)s marquées avec les mots-clés '%"
-#~ "(tag_name)s'"
+#~ "voir d'autres questions de %(view_user)s marquées avec les mots-clés "
+#~ "'%(tag_name)s'"
#~ msgid "home"
#~ msgstr "accueil"
@@ -6631,8 +6849,8 @@ msgstr ""
#~ msgstr "Information sur la méthode classique de connexion"
#~ msgid ""
-#~ "how to login with password through external login website or use %"
-#~ "(feedback_url)s"
+#~ "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"
@@ -6775,9 +6993,6 @@ msgstr ""
#~ "Benutzerprofil ablegen. Diese Daten werden nicht ohne die ausdrückliche "
#~ "Zustimmung des Nutzers öffentlich angezeigt."
-#~ msgid "Other Services"
-#~ msgstr "Autres services"
-
#~ msgid "details on sharing data with third parties"
#~ msgstr ""
#~ "Keine Daten, die nicht mit Zustimmung des Benutzers öffentlich auf der "
@@ -6897,8 +7112,8 @@ msgstr ""
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " see <strong>%"
-#~ "(counter)s</strong> more\n"
+#~ " see <strong>"
+#~ "%(counter)s</strong> more\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -6914,8 +7129,8 @@ msgstr ""
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " see <strong>%"
-#~ "(counter)s</strong> more comments\n"
+#~ " see <strong>"
+#~ "%(counter)s</strong> more comments\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
diff --git a/askbot/locale/fr/LC_MESSAGES/djangojs.mo b/askbot/locale/fr/LC_MESSAGES/djangojs.mo
index 386cff64..d1b1182b 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 96c21a1c..2e3be03d 100644
--- a/askbot/locale/fr/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/fr/LC_MESSAGES/djangojs.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-08 02:27-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
"MIME-Version: 1.0\n"
@@ -17,49 +17,331 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+msgstr ""
+
+#: 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"
+
+#: skins/common/media/js/post.js:282
+msgid "insufficient privilege"
+msgstr "Privilèges insuffisants"
+
+#: skins/common/media/js/post.js:283
+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"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr "Veuillez vous authentifier"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "les utilisateurs anonyment ne peuvent pas voter "
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "Veuillez confirmer que le contenu est abusif"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+"Les utilisateurs anonymes ne peuvent pas signaler les messages à contenu "
+"abusif"
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "Confirmer la suppression"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "Les utilisateurs anonymes ne peuvent pas supprimer/restaurer"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "Message restauré"
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr "Message supprimé"
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: skins/common/media/js/post.js:615
+msgid "undelete"
+msgstr "Restaurer"
+
+#: skins/common/media/js/post.js:620
+msgid "delete"
+msgstr "supprimer"
+
+#: skins/common/media/js/post.js:957
+msgid "add comment"
+msgstr "OK"
+
+#: skins/common/media/js/post.js:960
+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 "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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr "gras"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "italique"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "lien"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "Citer"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "Texte préformaté"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "Image"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "liste numérotée"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "liste"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "Titre"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "Barre horizontale"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "Annuler"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "Rétablir"
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+"Veuillez saisir une URL menant à une image, par exemple <br />http://www."
+"votre-domaine.com/nom-image.jpg"
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr "Entrez une URL, par exemple <br />http://www.askbot.org/ </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 ""
+
+#: 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/it/LC_MESSAGES/django.mo b/askbot/locale/it/LC_MESSAGES/django.mo
index 6cbc8fac..0235a51f 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 8b647103..7c375803 100644
--- a/askbot/locale/it/LC_MESSAGES/django.po
+++ b/askbot/locale/it/LC_MESSAGES/django.po
@@ -7,48 +7,44 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
-"PO-Revision-Date: 2010-08-25 06:29\n"
-"Last-Translator: <fph@ngi.it>\n"
+"POT-Creation-Date: 2011-11-27 02:33-0600\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \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 "mi spiace, devi essere registrato per accettare una risposta"
+msgstr "Mi spiace, ma devi essere registrato per usare questa funzionalità"
#: feed.py:26 feed.py:100
msgid " - "
-msgstr "-"
+msgstr " - "
#: feed.py:26
-#, fuzzy
msgid "Individual question feed"
-msgstr "Domande selezionate individualmente"
+msgstr "Feed di un'unica domanda"
#: feed.py:100
msgid "latest questions"
msgstr "domande recenti"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "Cancella il tuo utente"
+msgstr "scegli lo Stato"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "Paese"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "campo obbligatorio"
+msgstr "Il campo Stato è obbligatorio"
#: forms.py:104
msgid "title"
@@ -95,7 +91,7 @@ msgstr[1] "per favore usa un numero uguale o inferiore a %(tag_count)d tags"
#: forms.py:181
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Devi inserire almeno uno di questi tag: %(tags)s"
#: forms.py:190
#, python-format
@@ -111,6 +107,8 @@ msgstr "usa-questi-caratteri-nei-tag"
#: forms.py:233
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
msgid ""
@@ -134,30 +132,29 @@ msgstr ""
#: forms.py:327
msgid "Enter number of points to add or subtract"
-msgstr "inserisci un numero di punti da aggiungere o rimuovere"
+msgstr "Inserisci un numero di punti da aggiungere o rimuovere"
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr "approvato"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr "osservato"
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr "sospeso"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr "bloccato"
#: forms.py:346
-#, fuzzy
msgid "administrator"
-msgstr "Amministratore del sito"
+msgstr "Amministratore"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr "moderatore"
@@ -182,16 +179,17 @@ msgid "Cannot change status of another moderator"
msgstr "Non è possibile cambiare lo stato di un altro moderatore"
#: forms.py:434
-#, fuzzy
msgid "Cannot change status to admin"
-msgstr "Non è possibile cambiare il proprio stato"
+msgstr "Non è possibile cambiare il proprio stato ad amministratore"
#: forms.py:440
-#, fuzzy, python-format
+#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
-msgstr "Se desideri cambiare lo stato di %(username)s, "
+msgstr ""
+"Se desideri cambiare lo stato di %(username)s, per piacere fai una selezione "
+"sensata."
#: forms.py:449
msgid "Subject line"
@@ -202,531 +200,584 @@ msgid "Message text"
msgstr "Messaggio"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Il tuo nome:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Email (non condivisa con altri):"
+#, fuzzy
+msgid "Email:"
+msgstr "e-mail:"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Il tuo messaggio:"
-#: forms.py:581
-#, fuzzy
+#: 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
msgid "ask anonymously"
-msgstr "utente non registrato"
+msgstr "chiedi come utente anonimo"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
-msgstr ""
+msgstr "Controlla se non vuoi rivelare il tuo nome quando fai questa domanda"
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"Hai posto questa domanda in modo anonimo. se decidi di rivelare la tua "
+"identità, per favore seleziona questo campo."
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
-msgstr ""
+msgstr "rivela l'identità"
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"Spiacenti, solo il proprietario della domanda anonima può rivelare la sua "
+"identità, per favore togli la spunta dal campo"
-#: forms.py:818
+#: 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 ""
+"Spiacenti, sembra che le regole siano cambiate e che non è più possibile "
+"porre domande anonime. Controlla il box \"rivela identità\" oppure ricarica "
+"questa pagina e prova a modificare la domanda ancora"
-#: forms.py:856
-#, fuzzy
+#: forms.py:886
msgid "this email will be linked to gravatar"
-msgstr "questa email non deve essere linkata al gravatar"
+msgstr "questa email verrà linkata a gravatar"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "Nome reale"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Sito web"
-#: forms.py:877
+#: forms.py:907
msgid "City"
-msgstr ""
+msgstr "Città"
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
-msgstr ""
+msgstr "Mostra paese"
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Data di nascita"
-#: forms.py:892
+#: forms.py:922
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:898
+#: forms.py:928
msgid "Profile"
msgstr "Profilo"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Nome utente"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "questa email è già stata registrata, per favore utilizzane un'altra"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "Scegli il tag filtro per l'email"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Chiesto da me"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Risposta fornita da me"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Selezionato individualmente"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Tutto il forum (tag filtrati)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "Commenti e post che mi citano"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "okay, proviamo!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "per favore scegli una delle opzioni soprariportate"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "about/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "faq/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "privacy/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "risposte/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "modifica/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "revisioni/"
-#: 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: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/"
msgstr "domande/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "chiedi/"
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr "retag/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "chiudi/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "riapri/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "rispondi/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "vota/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "tag/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "iscrivi-per-tag/"
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "utenti/"
-#: urls.py:210
-#, fuzzy
+#: urls.py:214
msgid "subscriptions/"
-msgstr "notifiche"
+msgstr "iscrizioni/"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "utenti/aggiornamenti_ha_avatar_personalizzzato"
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "badges/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "messaggi/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "segnacomeletto/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "upload/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "contatti/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "domanda/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "account/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
#, fuzzy
-msgid "Badge settings"
+msgid "Access control settings"
msgstr "Impostazioni base"
-#: conf/badges.py:21
-msgid "Disciplined: minimum upvotes for deleted post"
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:13
+msgid "Badge settings"
+msgstr "Impostazioni del badge"
+
+#: conf/badges.py:23
+msgid "Disciplined: minimum upvotes for deleted post"
+msgstr "Moderato: voti positivi minimi per il post cancellato"
+
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "Pressione tra pari: voti negativi minimi per i contenuti cancellati"
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "Insegnante: voti positivi minimi per la risposta"
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Bella risposta: minimi voti positivi per la risposta"
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Buona Risposta: voti positivi minimi per la risposta"
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Ottima Risposta: voti positivi minimi per la risposta"
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Bella Domanda: voti positivi minimi per la domanda"
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Buona Domanda: messaggi positivi minimi per la domanda"
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Grande Domanda: voti positivi minimi per la domanda"
-#: conf/badges.py:102
-#, fuzzy
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
-msgstr "Domanda gettonata"
+msgstr "Domanda Gettonata: visualizzazioni minime"
-#: conf/badges.py:111
-#, fuzzy
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
-msgstr "Domanda notevole"
+msgstr "Domanda notevole: visualizzazioni minime"
-#: conf/badges.py:120
-#, fuzzy
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
-msgstr "Domanda famosa"
+msgstr "Domanda famosa: visualizzazioni minime"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
-msgstr ""
+msgstr "Autodidatta: votazioni positive minime alle risposte"
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
-msgstr ""
+msgstr "Senso Civico: votazioni minime"
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "Dovere Illuminato: votazioni positive minime"
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
-msgstr ""
+msgstr "Guru: votazioni positive minime"
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "Negromante"
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "Necromante: ritardo minimo in giorni"
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
-msgstr ""
+msgstr "Editore Assiciato: numero minimo di modifiche"
-#: conf/badges.py:192
-#, fuzzy
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
-msgstr "Domanda apprezzata"
+msgstr "Domanda apprezzata: numero minimo di stellette"
-#: conf/badges.py:201
-#, fuzzy
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
-msgstr "Domanda stellare"
+msgstr "Domanda stellare: numero minimo di stellette"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "Commentatore: numero minimo di commenti"
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "Tassonomista: numero minimo di tag"
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "Entusiasta: numero minimo di giorni"
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "Configurazione email ed avvisi tramite mail"
-#: conf/email.py:22
-#, fuzzy
+#: conf/email.py:24
msgid "Prefix for the email subject line"
-msgstr "Benvenuto!"
+msgstr "Prefisso per l'oggetto delle email"
-#: conf/email.py:24
+#: conf/email.py:26
+#, fuzzy
msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
"value entered here will overridethe default."
msgstr ""
+"Questa impostazione vengono prese dalle impostazioni predefinite di django "
+"EMAIL_SUBJECT_PREFIX. Ail valore inserito quà sovrascriverà il predefinito."
-#: conf/email.py:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr "Massimo numero di news in un avviso tramite mail"
-#: conf/email.py:64
-#, fuzzy
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr "Frequenza di notifica news predefinita"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
-msgstr ""
+msgstr "Opzione per determinare la frequenza di email autovalutate"
-#: conf/email.py:78
-#, fuzzy
+#: conf/email.py:62
msgid "Default notification frequency questions asked by the user"
-msgstr "Frequenza di notifica news predefinita"
+msgstr "Frequenza predefinita della notifica delle domande fatte dagli utenti"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
+"Opzione per definire la frequenza degli aggiornamenti per email per: Domande "
+"chieste dall'utente"
-#: conf/email.py:92
-#, fuzzy
+#: conf/email.py:76
msgid "Default notification frequency questions answered by the user"
-msgstr "Frequenza di notifica news predefinita"
+msgstr ""
+"Frequenza predefinita di invio delle notifiche per risposte date dall'utente"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
+"Opzione per definire la frequenza degli aggiornamenti email per: Domande "
+"risposte da utente."
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
+"Frequenza predefinita di aggiornamento per le domande selezionate "
+"individualmente dall'utente"
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
+"Opzione per definire la frequenza di aggiornamenti email per: Domande "
+"individuali, selezionati dall'utente."
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
+"Frequenza predefinita per le notifiche per menzionare ecommenti"
-#: conf/email.py:124
+#: conf/email.py:108
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:135
-#, fuzzy
+#: conf/email.py:119
msgid "Send periodic reminders about unanswered questions"
msgstr "Non ci sono domande senza risposte"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
-#, fuzzy
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
-msgstr "Non ci sono domande senza risposte"
+msgstr ""
+"Giorni trascorsi prima di inviare promemoria riguardo domande non risposte"
-#: conf/email.py:162
+#: conf/email.py:145
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:174
+#: conf/email.py:157
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
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Manda promemoria periodici per accettare la risposta migliore"
+
+#: 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:183
+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
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr "Quanto spesso "
+
+#: conf/email.py:206
+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:186
+#: conf/email.py:218
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:187
+#: conf/email.py:219
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:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr "Consenti solo un account per indirizzo email"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr "Email fasulla per gli utenti non registrati"
-#: conf/email.py:206
+#: conf/email.py:238
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:215
-#, fuzzy
+#: conf/email.py:247
msgid "Allow posting questions by email"
-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."
+msgstr "Consenti di inviare domande per email"
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
+"Prima di abilitare questa opzione, prima compila le impostazioni IMAP nelle "
+"impostazioni.file py"
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "Sostituisci lo spazio nei tag delle email con un trattino"
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+"Queste impostazioni si applicano ai tag scritti nel campo oggetto della "
+"domanda risoltaper email"
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
-msgstr "Chiavi per connettere il sito con servizi esterni come Facebook, ecc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr "Chiave per servizi esterni"
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Site verification key di Google"
-#: conf/external_keys.py:20
-#, fuzzy, python-format
+#: 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 ""
"Questa chiave aiuta google ad indicizzare il tuo sito. Per favore ottienila "
-"presso gli <a href=\"%(google_webmasters_tools_url)s\">strumenti per i "
-"webmaster di Google</a>"
+"presso gli <a href=\"%(url)s hl=%(lang)s\">strumenti per i webmaster di "
+"Google</a>"
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Chiave Google Analytics"
-#: conf/external_keys.py:37
-#, fuzzy, python-format
+#: 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 ""
-"Ottieni un account <a href=\"%(ga_site)s\">Google Analytics</a>, se vuoi "
+"Ottieni un account <a href=\"%(url)s\">Google Analytics</a>, se vuoi "
"utilizzare Google Analytics per monitorare il tuo sito web"
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
-msgstr ""
+msgstr "Abilita il recaptcha (le chiavi quà sotto sono necessarie)"
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr "Chiave pubblica Recaptcha"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr "Chiave privata Recaptcha"
-#: conf/external_keys.py:69
-#, fuzzy, python-format
+#: conf/external_keys.py:70
+#, 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</"
@@ -734,14 +785,14 @@ msgid ""
msgstr ""
"Recaptcha è un tool che aiuta a distinguere persone reali da fastidisosi "
"spam robots. Per favore ottieni questa ed una chiave pubblica all'indirizzo "
-"<a href=\"http://recaptcha.net\">recaptcha.net</a>"
+"<a href=\"%(url)s\">recaptcha.net</a>"
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr "Facebook API key"
-#: conf/external_keys.py:83
-#, fuzzy, python-format
+#: conf/external_keys.py:84
+#, 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"
@@ -749,83 +800,85 @@ msgid ""
msgstr ""
"La Facebook API key ed il Facebook secret ti permettono di usare Facebook "
"Connect per i login al tuo sito. Per favore ottieni queste chiavi presso la "
-"pagina <a href=\"http://www.facebook.com/developers/createapp.php\">facebook "
-"create app</a>"
+"pagina <a href=\"%(url)s\">facebook create app</a>"
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr "Facebook secret key"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Il codice utente di Twitter"
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
+"Per favore registra il tuo form a <a href=\"%(url)s\">sito dell'applicazione "
+"twitter</a>"
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Il codice segreto dell'utente di Twitter"
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "Il codice utente di LinkedIn"
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
+"Per favore, registra il tuo form a <a href=\"%(url)s\">sito di sviluppo di "
+"LinkedIn"
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "Codice segreto di LinkedIn"
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
-msgstr ""
+msgstr "codice utente di ident.ca"
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
-msgstr ""
+msgstr "Per favore registra il tuo forum a <a href\"%(url)s\">Identi.ca"
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
-msgstr ""
+msgstr "codice utente di identi.ca"
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
-msgstr ""
+msgstr "Usa l'autenticazione LDAP per le passwird "
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
-msgstr ""
+msgstr "Nome utente del provider LDAP"
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
-msgstr ""
+msgstr "URL del servizio LDAP"
-#: conf/external_keys.py:192
-#, fuzzy
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
-msgstr "Cambia password"
+msgstr "Spiega come modificare la password LDAP"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Pagine statiche - about, privacy policy, etc."
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr "Testo della pagina About del Q&A forum (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."
@@ -833,13 +886,11 @@ msgstr ""
"Salva, poi <a href=\"http://validator.w3.org/\">utilizza il validatore "
"HTML<a> sulla pagina \"about\" per controllare il tuo input."
-#: conf/flatpages.py:30
-#, fuzzy
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr "Testo della pagina About del Q&A forum (formato html)"
-#: conf/flatpages.py:33
-#, fuzzy
+#: 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."
@@ -847,11 +898,11 @@ msgstr ""
"Salva, poi <a href=\"http://validator.w3.org/\">utilizza il validatore "
"HTML<a> sulla pagina \"about\" per controllare il tuo input."
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr "Testo della pagina Privacy Policy del Q&A forum (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."
@@ -859,264 +910,290 @@ msgstr ""
"Salva, poi <a href=\"http://validator.w3.org/\">utilizza il validatore "
"HTML<a> sulla pagina \"about\" per controllare il tuo input."
-#: conf/forum_data_rules.py:11
-#, fuzzy
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr "Impostazioni per la visualizzazione dei dati di Askbot"
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
+"Abilita l'inserimento di video. <em>Nota: per favore leggi <a href="
+"\"%(url)s>leggi questo</a> prima </em>"
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr "Spunta per impostare come 'domanda comunitaria'"
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Permetti di rispondere alle domande anonimamente"
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
-msgstr ""
+msgstr "Permetti di postare prima del 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 ""
+"Seleziona se vuoi permettere agli utenti di inserire domande o risposte "
+"prima di fare login. Questa impostazione richiede una modifica nel sistema "
+"dei login per verificare se ci sono inserimenti in attesa ogni volta che un "
+"utente accede.Il sistema di login integrato in Askbot supporta questa "
+"funzionalità."
-#: conf/forum_data_rules.py:71
-#, fuzzy
+#: conf/forum_data_rules.py:73
msgid "Allow swapping answer with question"
-msgstr "Rispondi alla domanda"
+msgstr "Consenti di scambiare la domanda con la risposta"
-#: 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 ""
+"Questa impostazione aiuterà ad importare i dati da altri forum come zendesk, "
+"quando l'importazione automatica dei dati non riesce ad identificare "
+"correttamente la domanda originale."
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "Massima lunghezza di un tag (numero di caratteri)"
-#: conf/forum_data_rules.py:93
-#, fuzzy
+#: conf/forum_data_rules.py:95
msgid "Mandatory tags"
-msgstr "ha aggiornato i tag"
+msgstr "Tag obbligatori"
-#: conf/forum_data_rules.py:96
+#: 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 ""
+"Almeno uno di questi tag sarà richiesto per ogni domanda creata o modificata."
+"Il tag obbligatorio può essere anche un wildcard, se i tag wilcard sono "
+"attivi."
-#: conf/forum_data_rules.py:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "Forza tag con lettere minuscole"
-#: conf/forum_data_rules.py:110
+#: 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 ""
+"Attenzione: dopo aver selezionato questa impostazione fai un backup del "
+"database ed esegui il comando <code>python manage.py fix_question_tags</"
+"code> per aggiornare i tag globalmente"
-#: conf/forum_data_rules.py:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
-msgstr ""
+msgstr "Formato della lista dei tag"
-#: conf/forum_data_rules.py:126
+#: 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 ""
+"Seleziona il formato con cui mostrare i tag: lista semplice o come una "
+"nuvola di tag"
-#: conf/forum_data_rules.py:138
-#, fuzzy
+#: conf/forum_data_rules.py:140
msgid "Use wildcard tags"
-msgstr "Tag"
+msgstr "Usa tag multipli"
-#: conf/forum_data_rules.py:140
+#: 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 ""
+"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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
-msgstr ""
+msgstr "Numero massimo di commenti da mostrare sotto il post"
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
-msgstr ""
+msgstr "La lunghezza massima del commento deve essere < %(max_len)s"
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
-msgstr ""
+msgstr "Limita il tempo per modificare i commenti"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
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:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "Minuti concessi per modificare un commento"
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "Per abilitare questa impostazione devi selezionare la precedente"
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "Salva i commenti premendo <Enter>"
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
-msgstr ""
+msgstr "Lunghezza minima dei termini di ricerca per la ricerca Ajax"
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
-msgstr ""
+msgstr "Deve corrispondere all'analoga impostazione backend del database"
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "Non rendere il campo di ricerca adesivo"
-#: conf/forum_data_rules.py:218
+#: 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 ""
+"Seleziona per disabilitare il comportamento \"adesivo\" della barra di "
+"ricerca. Questo può essere utile se vuoi spostare la barra di ricerca dalla "
+"sua posizione predefinita o non ti piace il comportamento adesivo "
+"predefinito della barra di ricerca."
-#: conf/forum_data_rules.py:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr "Massimo numero di tag per domanda"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr "Numero di domande da mostrare di default"
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr "Cosa dovrebbe significare \"domande senza risposta\"?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "Impostazioni base"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr "Contenuto LicensaContenuto Licensa"
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
-msgstr ""
+msgstr "Mostra le clausole di licenza nel footer del sito"
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
-msgstr ""
+msgstr "Nome breve per la licenza"
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "Nome completo della licenza"
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
-msgstr ""
+msgstr "Creative Commons Attribuzione Condividi allo stesso modo 3.0"
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
-msgstr ""
+msgstr "Aggiungi link alla pagina della licenza"
-#: conf/license.py:55
-#, fuzzy
+#: conf/license.py:57
msgid "License homepage"
-msgstr "torna alla home page"
+msgstr "Home page della licenza"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "URL della pagina ufficiale del testo della licenza"
-#: conf/license.py:67
-#, fuzzy
+#: conf/license.py:69
msgid "Use license logo"
-msgstr "Logo del forum Q&A"
+msgstr "Usa il logo della licenza"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "Immagine di logo della licenza"
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "Impostazioni del login"
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
-msgstr ""
+msgstr "Mostra un bottone alternativo per il login nella pagina \"Iscriviti\""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
-msgstr ""
+msgstr "Mostra sempre il campo per il login e nascondi il bottone \"Askbot\""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
-msgstr ""
+msgstr "Attiva per permettere il login nel sito wordpress ospitato"
-#: 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 ""
+"per attivare questa funzione devi compilare le impostazioni xml-rpc di "
+"wordpress quà sotto"
-#: 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 ""
+"Inserisci l'url dell'xml-rpc di wordpress, di solito questo è http://miosito."
+"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 ""
+"Per abilitarlo, vai in Impostazioni->Scrittura->Pubblicazione Remota e "
+"seleziona la casella per XML-RPC"
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
-msgstr ""
+msgstr "Carica la tua icona"
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
-msgstr ""
+msgstr "Attiva il login per %(provider)s"
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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: per abilitare veramente il login per %(provider)s devi aggiungere dei "
+"paramentri nella sezione \"Chiavi esterne\""
-#: conf/markup.py:14
-msgid "Markup formatting"
-msgstr ""
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr "Markup nei post"
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
-msgstr ""
+msgstr "Abilita Markdown che supporta il codice"
-#: 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 "
@@ -1124,43 +1201,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1169,11 +1246,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1183,172 +1260,169 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "Reputazione minima per eseguire operazioni"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr "Dare un voto positivo"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr "Dare un voto negativo"
-#: conf/minimum_reputation.py:38
-#, fuzzy
+#: conf/minimum_reputation.py:40
msgid "Answer own question immediately"
-msgstr "Rispondi alla tua domanda"
+msgstr "Rispondi alla tua domanda subito"
-#: conf/minimum_reputation.py:47
-#, fuzzy
+#: conf/minimum_reputation.py:49
msgid "Accept own answer"
-msgstr "modificare ogni risposta"
+msgstr "Accetta la tua riposta"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "Segnalare come inappropriato"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr "Lasciare commenti"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "Cancellare commenti inviati da altri"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr "Cancellare domande e risposte inviate da altri"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr "Caricare files"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr "Chiudere le proprie domande"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr "Ritaggare domande inviate da altri utenti"
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr "Riaprire le proprie domande"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr "Modificare le domande comunitarie"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr "Modificare i post scritti da altri utenti"
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr "Visualizzare i flag inappropriati"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr "Chiudere domande poste da altri"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "Bloccare posts"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-#, fuzzy
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr "Regole relative all'ottenimento e cessione di punti reputazione"
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr "Massima reputazione ottenibile da un utente giornamente"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr "Guadagno per aver ricevuto un voto positivo"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr "Guadagno per l'autore di una risposta accettata"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr "Guadagno per aver accettato una migliore risposta"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
"Guadagno per il proprietario del post in caso di annullamento di un voto "
"negativo"
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
"Guadagno per un votante in caso di annullamento del proprio voto negativo"
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
"Perdita per un votante in caso di cancellazione di una risposta accettata"
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
"Perdita per l'autore nel caso una risposta passi da accettata a non "
"accettata "
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr "Perdita in caso di assegnamento di un voto negativo"
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr "Perdita per l'autore di un post in caso di flag inappropriato"
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr "Perdita per l'autore nel caso il post venga votato negativamente"
-#: 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 ""
"Perdita per l'autore nel caso il post venga flaggato 3 volte per la stessa "
"revisione"
-#: 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 ""
"Perdita per l'autore nel caso il post venga flaggato 5 volte per la stessa "
"revisione"
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr "Perdita per l'autore nel caso un voto positivo venga annullato"
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1356,44 +1430,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1401,52 +1475,51 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
+msgstr "Profilo utente"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+msgid "Question page sidebar"
+msgstr "Pagina delle domande nella barra laterale"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
-#, fuzzy
+#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
-msgstr "Domande simili"
+msgstr "Mostra domande simili nella barra laterale"
-#: 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 "clicca qui per vedere le domande modificate meno recentemente"
+msgstr ""
+"Non selezionare questa impostazione se vuoi nascondere la lista di domande "
+"collegate."
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Siti"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1454,53 +1527,51 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
-msgstr "Parametri ed url per il Q&A forum"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr "Titolo del sito per il Q&A forum"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr "Lista di parole chiave per il Q&A forum, separate da virgole"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr "Messaggio di Copyright da mostrare in fondo alla pagina"
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr "Descrizione del sito per i motori di ricerca"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr "Nome breve per il tuo forum Q&A"
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
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:77
-#, fuzzy
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
-msgstr "Email fasulla per gli utenti non registrati"
+msgstr "Seleziona per abilitare i saluti agli utenti anonimi"
-#: conf/site_settings.py:88
-#, fuzzy
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
-msgstr "Link mostrato agli utenti non registrati nel messaggio di benvenuto"
+msgstr "Testo mostrato nel benvenuto agli utenti anonimi"
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "Usa l'HTML per formattare il messaggio"
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "URL di un sito esterno per i contatti"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
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"
@@ -1526,9 +1597,8 @@ msgstr "colore di sfondo quando non ci sono voti"
#: 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
msgid "HTML color name or hex value"
-msgstr "Nome di colore HTML o valore esadecimale"
+msgstr "Nome del colore HTML o valore esadecimale"
#: conf/skin_counter_settings.py:40
msgid "Foreground color for votes = 0"
@@ -1614,34 +1684,34 @@ msgstr "Colore di sfondo per le domande con una <risposta accettata"
msgid "Foreground color for accepted answer"
msgstr "Colore del testo per le domande con una <risposta accettata"
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
-msgstr "Impostazioni della skin e dell'interfaccia utente"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr "Logo del forum Q&A"
-#: 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 ""
"Per cambiare il logo, seleziona il nuovo file, poi salva le impostazioni"
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1649,21 +1719,21 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr "Mostra tutte le funzionalità a tutti gli utenti"
-#: conf/skin_general_settings.py:90
+#: 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 "
@@ -1673,19 +1743,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:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr "Scegli skin"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1697,11 +1767,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1710,21 +1780,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1733,21 +1803,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1756,19 +1826,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1779,141 +1849,162 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr "Numero di revisione dei media della skin"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
-#, fuzzy
+#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
-msgstr "Riapri questa domanda"
+msgstr "Seleziona per abilitare la condivisione delle domande su Twitter"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
-#, fuzzy
+#: 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:12
msgid "User settings"
-msgstr "Impostazioni dei diritti degli utenti"
+msgstr "Impostazioni degli utenti"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr "Permetti di modificare il nome utente visualizzato"
-#: conf/user_settings.py:28
-#, fuzzy
+#: conf/user_settings.py:30
msgid "Allow account recovery by email"
-msgstr "Consenti solo un account per indirizzo email"
+msgstr "Consenti il recupero dell'account per email"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr "Lunghezza minima per il nome utente visualizzato"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
-#, fuzzy
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
-msgstr "Email fasulla per gli utenti non registrati"
+msgstr "Nome per gli utenti anonimi"
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
-msgstr "Limiti riguardanti i voti e i post segnati come inappropriati"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr "Massimo numero di voti che un utente può dare ogni giorno"
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
"Massimo numero di post che un utente può segnare come inappropriati ogni "
"giorno"
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr "Soglia per avvertire del numero di voti rimanenti"
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr "Numero di giorni per consentire di cancellare voti"
-#: conf/vote_rules.py:58
-#, fuzzy
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
-msgstr "Numero di giorni per consentire di cancellare voti"
+msgstr "Numero di giorni richiesti per rispondere alla propria domanda"
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
"Numero di segnalazioni come inappropriato dopo il quale il post viene "
"nascosto automaticamente"
-#: conf/vote_rules.py:76
+#: conf/vote_rules.py:78
msgid "Number of flags required to automatically delete posts"
msgstr ""
"Numero di segnalazioni come inappropriato dopo il quale il post viene "
"cancellato automaticamente"
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "la domanda è già stata posta"
@@ -2000,9 +2091,8 @@ msgid "favorite"
msgstr "preferite"
#: const/__init__.py:64
-#, fuzzy
msgid "list"
-msgstr "Lista dei tag"
+msgstr "lista"
#: const/__init__.py:65
msgid "cloud"
@@ -2016,219 +2106,213 @@ msgstr "La domanda non ha risposte"
msgid "Question has no accepted answers"
msgstr "La domanda non ha risposte accettate"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "ha posto una domanda"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "ha risposto a una domanda"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "ha commentato una domanda"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "ha commentato una risposta"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "ha modificato una domanda"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "ha modificato una risposta"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "ha ricevuto una medaglia"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "ha accettato una risposta"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "ha dato un voto positivo"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "ha dato un voto positivo"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "ha annullato un voto"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "ha cancellato una domanda"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "ha cancellato una risposta"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "ha segnalato come inappropriata"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "ha aggiornato i tag"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "ha scelto un tag preferito"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "ha completato il suo profilo utente"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "aggiornamento via mail inviato all'utente"
-#: const/__init__.py:141
-#, fuzzy
+#: const/__init__.py:142
msgid "reminder about unanswered questions sent"
-msgstr "vedi domande senza risposta"
+msgstr "notifica le domande inviate che non hanno avuto risposta"
+
+#: const/__init__.py:146
+msgid "reminder about accepting the best answer sent"
+msgstr "notifica quando la risposta viene considerata la migliore"
-#: const/__init__.py:143
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "menzionato nel post"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "risposta_a_una_domanda"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "commento_a_una_domanda"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "risposta_commentata"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "risposta_accettata"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[chiusa]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[cancellata]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "versione iniziale"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "ritaggata"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
-#, fuzzy
+#: const/__init__.py:218
msgid "exclude ignored"
-msgstr "escludi tag ignorati"
+msgstr "escludi gli ignorati"
-#: const/__init__.py:214
-#, fuzzy
+#: const/__init__.py:219
msgid "only selected"
-msgstr "Selezionato individualmente"
+msgstr "unico selezionato"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr "immediatamente"
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "ogni giorno"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "ogni settimana"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "mai"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
-#, fuzzy
+#: const/__init__.py:234
msgid "mystery-man"
-msgstr "ieri"
+msgstr "mystery-man"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
-#, fuzzy
+#: const/__init__.py:236
msgid "wavatar"
-msgstr ""
-"Come cambio la mia immagine personale (gravatar)? Che cos'è il gravatar?"
+msgstr "wavatar"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "oro"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "argento"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "bronzo"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
#: const/message_keys.py:15
-#, fuzzy
msgid "most relevant questions"
-msgstr "poni una domanda interessante per gli altri"
+msgstr "la domanda più rilevante"
#: const/message_keys.py:16
-#, fuzzy
msgid "click to see most relevant questions"
-msgstr "clicca qui per vedere le domande più votate"
+msgstr "clicca qui se vuoi vedere le domande più rilevanti"
#: const/message_keys.py:17
-#, fuzzy
msgid "by relevance"
-msgstr "rilevanza"
+msgstr "per rilevanza"
#: const/message_keys.py:18
msgid "click to see the oldest questions"
msgstr "clicca qui per vedere le domande più vecchie"
#: const/message_keys.py:19
-#, fuzzy
msgid "by date"
-msgstr "Conferma"
+msgstr "per data"
#: const/message_keys.py:20
msgid "click to see the newest questions"
@@ -2239,37 +2323,32 @@ msgid "click to see the least recently updated questions"
msgstr "clicca qui per vedere le domande modificate meno recentemente"
#: const/message_keys.py:22
-#, fuzzy
msgid "by activity"
-msgstr "attività"
+msgstr "per attività"
#: const/message_keys.py:23
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
-#, fuzzy
msgid "click to see the least answered questions"
-msgstr "clicca qui per vedere le domande più vecchie"
+msgstr "clicca qui per vedere l'ultima domanda risposta"
#: const/message_keys.py:25
-#, fuzzy
msgid "by answers"
-msgstr "risposte"
+msgstr "per risposte"
#: const/message_keys.py:26
-#, fuzzy
msgid "click to see the most answered questions"
-msgstr "clicca qui per vedere le domande più votate"
+msgstr "clicca qui per vedere le domande più risposte"
#: const/message_keys.py:27
msgid "click to see least voted questions"
msgstr "clicca per vedere le domande meno votate"
#: const/message_keys.py:28
-#, fuzzy
msgid "by votes"
-msgstr "voti"
+msgstr "per voti"
#: const/message_keys.py:29
msgid "click to see most voted questions"
@@ -2286,28 +2365,25 @@ msgid "i-names are not supported"
msgstr "i-names non sono supportati"
#: deps/django_authopenid/forms.py:233
-#, fuzzy, python-format
+#, python-format
msgid "Please enter your %(username_token)s"
-msgstr "Per favore inserisci il tuo username"
+msgstr "Per favore inserisci il tuo %(username_token)s"
#: deps/django_authopenid/forms.py:259
-#, fuzzy
msgid "Please, enter your user name"
msgstr "Per favore inserisci il tuo username"
#: deps/django_authopenid/forms.py:263
-#, fuzzy
msgid "Please, enter your password"
msgstr "Per favore inserisci la tua password"
#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
-#, fuzzy
msgid "Please, enter your new password"
-msgstr "Per favore inserisci la tua password"
+msgstr "Per favore inserisci la tua nuova password"
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
-msgstr ""
+msgstr "Le password non corrispondono"
#: deps/django_authopenid/forms.py:297
#, python-format
@@ -2339,7 +2415,7 @@ msgid "Incorrect username."
msgstr "Mi spiace, questo username non esiste"
#: 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:206
msgid "signin/"
msgstr "signin/"
@@ -2352,9 +2428,8 @@ msgid "complete/"
msgstr "complete/"
#: deps/django_authopenid/urls.py:15
-#, fuzzy
msgid "complete-oauth/"
-msgstr "complete/"
+msgstr "complete-oauth/"
#: deps/django_authopenid/urls.py:19
msgid "register/"
@@ -2369,21 +2444,19 @@ msgid "logout/"
msgstr "logout/"
#: deps/django_authopenid/urls.py:30
-#, fuzzy
msgid "recover/"
-msgstr "riapri/"
+msgstr "recupera/"
#: deps/django_authopenid/util.py:378
-#, fuzzy, python-format
+#, python-format
msgid "%(site)s user name and password"
-msgstr "Per favore inserisci username e password"
+msgstr "Per favore inserisci username e password di %(site)s"
#: deps/django_authopenid/util.py:384
msgid "Create a password-protected account"
msgstr ""
#: deps/django_authopenid/util.py:385
-#, fuzzy
msgid "Change your password"
msgstr "Cambia password"
@@ -2392,24 +2465,20 @@ msgid "Sign in with Yahoo"
msgstr ""
#: deps/django_authopenid/util.py:480
-#, fuzzy
msgid "AOL screen name"
msgstr "Nome utente"
#: deps/django_authopenid/util.py:488
-#, fuzzy
msgid "OpenID url"
msgstr "url OpenID:"
#: deps/django_authopenid/util.py:517
-#, fuzzy
msgid "Flickr user name"
-msgstr "nome utente"
+msgstr "nome utente Flickr"
#: deps/django_authopenid/util.py:525
-#, fuzzy
msgid "Technorati user name"
-msgstr "Scegli un nome utente"
+msgstr "nome utente di Technorati"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
@@ -2424,24 +2493,21 @@ msgid "LiveJournal blog name"
msgstr ""
#: deps/django_authopenid/util.py:557
-#, fuzzy
msgid "ClaimID user name"
-msgstr "nome utente"
+msgstr "nome utente di ClaimID"
#: deps/django_authopenid/util.py:565
-#, fuzzy
msgid "Vidoop user name"
-msgstr "nome utente"
+msgstr "nome utente di Vidoop"
#: deps/django_authopenid/util.py:573
-#, fuzzy
msgid "Verisign user name"
-msgstr "nome utente"
+msgstr "nome utente Verisign"
#: deps/django_authopenid/util.py:608
-#, fuzzy, python-format
+#, python-format
msgid "Change your %(provider)s password"
-msgstr "Cambia password"
+msgstr "Cambia password di %(provider)s"
#: deps/django_authopenid/util.py:612
#, python-format
@@ -2454,9 +2520,9 @@ msgid "Create password for %(provider)s"
msgstr ""
#: deps/django_authopenid/util.py:625
-#, fuzzy, python-format
+#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
-msgstr "Utilizza OpenID per accedere a questo sito"
+msgstr "Collega il tuo account %(provider)s per %(site_name)s"
#: deps/django_authopenid/util.py:634
#, fuzzy, python-format
@@ -2473,74 +2539,72 @@ msgstr ""
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:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
-#, fuzzy
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
-msgstr "New password created"
+msgstr "Nuova password salvata"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
-#, fuzzy
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
-msgstr "le due password non coincidono, riprova"
+msgstr "Oops! C'è stato un errore, per favore riprova"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1098
+#, python-format
msgid "Recover your %(site)s account"
-msgstr "Scegli una nuova password"
+msgstr "Recupera la password su %(site)s"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2548,100 +2612,32 @@ msgstr ""
msgid "Site"
msgstr "Sito"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr "Impostazioni base"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr "Valore predefinito: \"\""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr "Valore predefinito:"
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr "Valore predefinito: %s"
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "I tipi di file immagine consentiti sono %(types)s"
-#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
-msgid "Sites"
-msgstr "Siti"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-msgid "Documentation"
-msgstr "Documentazione"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-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"
-
-#: 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 "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/group_settings.html:68
-msgid "Setting groups"
-msgstr "Gruppi di impostazioni"
-
-#: 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"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:66
-#, python-format
-msgid "Group settings: %(name)s"
-msgstr "Impostazioni per i gruppi: %(name)s"
-
-#: 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"
@@ -2669,15 +2665,15 @@ 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>"
+"<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>"
+"<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
@@ -2686,6 +2682,19 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+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
+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
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2701,8 +2710,8 @@ 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>"
+"<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
msgid "new question"
@@ -2748,8 +2757,8 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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/"
@@ -2758,75 +2767,88 @@ msgstr ""
"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:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "Accedi o registrati per inserire domande"
+
+#: models/__init__.py:317
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:320
+#: models/__init__.py:321
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:333
-#, fuzzy, python-format
+#: models/__init__.py:334
+#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
-msgstr "Mi spiace, non puoi accettare una tua risposta a una tua domanda"
+msgstr ""
+"Ti servono più di %(points)s punti per accettare o negare la risposta alla "
+"tua stessa domanda"
-#: models/__init__.py:347
-#, fuzzy, python-format
+#: models/__init__.py:353
+#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-"Mi spiace, solo l'autore della domanda, %(username)s, può accettare una "
-"risposta"
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, python-format
+msgid ""
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
+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"
msgstr "Mi spiace, non puoi votare per i tuoi post"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr "Mi spiace, il tuo account è stato bloccato"
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr "Mi spiace, il tuo account è stato sospeso"
-#: models/__init__.py:393
+#: models/__init__.py:407
#, 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:399
+#: models/__init__.py:413
#, 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:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr "Mi spiace, gli utenti bloccati non possono caricare files"
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr "Mi spiace, gli utenti sospesi non possono caricare files"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
@@ -2834,21 +2856,21 @@ msgstr ""
"Mi spiace, serve avere più di %(min_rep)s punti reputazione per caricare "
"immagini"
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: 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:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
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."
-#: models/__init__.py:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2859,21 +2881,20 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
-#, fuzzy
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
"Mi spiace, solo gli autori, i moderatori e gli amministratori possono "
-"cambiare i tag di una domanda cancellata"
+"modificare i commenti"
-#: models/__init__.py:489
+#: models/__init__.py:503
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:493
+#: models/__init__.py:507
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2883,8 +2904,7 @@ msgstr ""
"Per commentare gli altri post serve avere almeno %(min_rep)s punti "
"reputazione. "
-#: models/__init__.py:521
-#, fuzzy
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2892,7 +2912,7 @@ msgstr ""
"Questo post è stato cancellato e può essere consultato solo dall'autore, dai "
"moderatori e dagli amministratori"
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2900,27 +2920,27 @@ msgstr ""
"Mi spiace, solo l'autore, i moderatori e gli amministratori possono "
"modificare un post cancellato."
-#: models/__init__.py:553
+#: models/__init__.py:567
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:557
+#: models/__init__.py:571
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:562
-#, fuzzy, python-format
+#: models/__init__.py:576
+#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-"Mi spiace, per modificare i post appartenenti allo wiki servono almeno %"
-"(min_rep)s punti reputazione"
+"Mi spiace, per modificare i post appartenenti allo wiki servono almeno "
+"%(min_rep)s punti reputazione"
-#: models/__init__.py:569
-#, fuzzy, python-format
+#: models/__init__.py:583
+#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
@@ -2928,7 +2948,7 @@ msgstr ""
"Mi spiace, per modificare i post altrui servono almeno %(min_rep)s punti "
"reputazione"
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2942,17 +2962,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:647
+#: models/__init__.py:661
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:651
+#: models/__init__.py:665
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:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
@@ -2961,16 +2981,16 @@ msgstr ""
"Mi spiace, per cancellare i post altrui servono almeno %(min_rep)s punti "
"reputazione"
-#: models/__init__.py:675
+#: models/__init__.py:689
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:679
+#: models/__init__.py:693
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:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
@@ -2979,7 +2999,7 @@ msgstr ""
"Mi spiace, per chiudere post altrui servono almeno %(min_rep)s punti "
"reputazione."
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
@@ -2987,16 +3007,16 @@ msgstr ""
"Mi spiace, per chiudere una tua domanda servono almeno %(min_rep)s punti "
"reputazione."
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
"Mi spiace, solo amministratori, moderatori e autori con più di %(min_rep)s "
"punti reputazione possono riaprire domande."
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
@@ -3004,39 +3024,39 @@ msgstr ""
"Mi spiace, per riaprire una tua domanda devi avere almeno %(min_rep)s punti "
"reputazione."
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
"Hai già segnalato questo messaggio come inappropriato, non puoi farlo una "
"seconda volta."
-#: models/__init__.py:747
+#: 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:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr ""
"Non puoi segnalare questo messaggio come inappropriato perché il tuo account "
"è sospeso."
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
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."
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
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."
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3044,19 +3064,19 @@ msgstr ""
"Mi spiace, solo gli autori, i moderatori e gli amministratori possono "
"cambiare i tag di una domanda cancellata"
-#: models/__init__.py:792
+#: models/__init__.py:806
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:796
+#: models/__init__.py:810
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:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
@@ -3064,160 +3084,152 @@ msgstr ""
"Mi spiace, servono almeno %(min_rep)s punti reputazione per cambiare i tag "
"di una domanda"
-#: models/__init__.py:819
+#: models/__init__.py:833
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:823
+#: models/__init__.py:837
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:827
+#: models/__init__.py:841
#, 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:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "Mi spiace, non è possibile annullare voti."
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "il %(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
-#, fuzzy, python-format
+#: models/__init__.py:1345
+#, 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:1333
-#, fuzzy, python-format
+#: models/__init__.py:1347
+#, 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:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
-#, fuzzy
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr "utente non registrato"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr "Amministratore del sito"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr "Moderatore del forum"
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr "Utente sospeso"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr "Utente bloccato"
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr "Utente registrato"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr "Utente in prova"
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr "Utente approvato"
-#: models/__init__.py:1719
-#, fuzzy, python-format
+#: models/__init__.py:1733
+#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr "hai %(reputation)s punti reputazione"
+msgstr "%(username)s ha %(reputation)s punti reputazione"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
-#, fuzzy, python-format
+#: models/__init__.py:1750
+#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
-msgstr[0] ""
-"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à."
-msgstr[1] ""
-"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à."
+msgstr[0] "una medaglia d'argento"
+msgstr[1] "%(count)d medaglie d'argento"
-#: models/__init__.py:1743
-#, fuzzy, python-format
+#: models/__init__.py:1757
+#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
-msgstr[0] ""
-"Se partecipi regolarmente a questa comunità, verrai sicuramente premiato con "
-"delle medaglie di bronzo."
-msgstr[1] ""
-"Se partecipi regolarmente a questa comunità, verrai sicuramente premiato con "
-"delle medaglie di bronzo."
+msgstr[0] "una medaglia di bronzo"
+msgstr[1] "%(count)d medaglie di bronzo"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
-#, fuzzy, python-format
+#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
+#: models/__init__.py:2195
+#, python-format
msgid "Re: \"%(title)s\""
-msgstr "nuova domanda"
+msgstr "Re:\"%(title)s\""
-#: models/__init__.py:2186 models/__init__.py:2191
-#, fuzzy, python-format
+#: models/__init__.py:2200 models/__init__.py:2205
+#, python-format
msgid "Question: \"%(title)s\""
-msgstr "nuova domanda"
+msgstr "Domanda: \"%(title)s\""
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3226,34 +3238,23 @@ msgstr ""
"Congratulazioni, hai ricevuto la medaglia %(badge_name)s. Controlla il <a "
"href=\"%(user_profile)s\">tuo profilo</a>."
-#: models/__init__.py:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "Mi spiace, questa domanda è stata cancellata e non è più accessibile"
-
#: models/badges.py:129
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr "Ha cancellato un proprio post con un punteggio di -3 o meno"
+msgstr "Ha cancellato un proprio post con un punteggio di %(votes)s o più"
#: models/badges.py:133
msgid "Disciplined"
msgstr "Ordinato"
#: models/badges.py:151
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr "Ha cancellato un proprio post con un punteggio di -3 o meno"
+msgstr "Ha cancellato un proprio post con un punteggio di %(votes)s o più"
#: models/badges.py:155
msgid "Peer Pressure"
@@ -3273,7 +3274,6 @@ msgid "Supporter"
msgstr "Sostenitore"
#: models/badges.py:219
-#, fuzzy
msgid "First upvote"
msgstr "Primo voto positivo"
@@ -3282,38 +3282,35 @@ msgid "Critic"
msgstr "Critico"
#: models/badges.py:228
-#, fuzzy
msgid "First downvote"
msgstr "Primo voto negativo"
#: models/badges.py:237
-#, fuzzy
msgid "Civic Duty"
msgstr "Senso civico"
#: models/badges.py:238
-#, fuzzy, python-format
+#, python-format
msgid "Voted %(num)s times"
-msgstr "Ha votato almeno 300 volte"
+msgstr "Votata almeno %(num)s volte"
#: models/badges.py:252
-#, fuzzy, python-format
+#, python-format
msgid "Answered own question with at least %(num)s up votes"
-msgstr "Ha risposto da solo a una sua domanda con almeno 3 voti"
+msgstr "Ha risposto da solo ad una sua domanda con almeno %(num)s voti"
#: models/badges.py:256
msgid "Self-Learner"
msgstr "Autodidatta"
#: models/badges.py:304
-#, fuzzy
msgid "Nice Answer"
msgstr "Buona risposta"
#: 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 "Risposta votata 10 volte"
+msgstr "Risposta votata %(num)s volte"
#: models/badges.py:316
msgid "Good Answer"
@@ -3328,9 +3325,9 @@ msgid "Nice Question"
msgstr "Buona domanda"
#: 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 "Domanda votata 10 volte"
+msgstr "Domanda votata %(num)s volte"
#: models/badges.py:352
msgid "Good Question"
@@ -3353,23 +3350,21 @@ msgid "Popular Question"
msgstr "Domanda gettonata"
#: 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 "Ha posto una domanda con più di 1000 consultazioni"
+msgstr "Ha posto una domanda con %(views)s consultazioni"
#: models/badges.py:425
msgid "Notable Question"
msgstr "Domanda notevole"
#: models/badges.py:436
-#, fuzzy
msgid "Famous Question"
-msgstr "Domanda famosa"
+msgstr "Domande famose"
#: models/badges.py:450
-#, fuzzy
msgid "Asked a question and accepted an answer"
-msgstr "La domanda non ha risposte accettate"
+msgstr "Domanda inserita e risposta accettata"
#: models/badges.py:453
msgid "Scholar"
@@ -3380,33 +3375,33 @@ msgid "Enlightened"
msgstr "Illuminato"
#: models/badges.py:499
-#, fuzzy, python-format
+#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr "La sua prima risposta è stata accettata con almeno 10 voti"
+msgstr "La sua prima risposta è stata accettata con almeno %(num)s voti"
#: models/badges.py:507
msgid "Guru"
msgstr "Guru"
#: models/badges.py:510
-#, fuzzy, python-format
+#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr "La sua prima risposta è stata accettata con almeno 10 voti"
+msgstr "La sua prima risposta è stata accettata con almeno %(num)s voti"
#: 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 ""
-"Ha risposto a una domanda vecchia di almeno 60 giorni ottenendo almeno 5 voti"
+"Ha risposto a una domanda vecchia di almeno %(days)s giorni ottenendo almeno "
+"%(votes)s voti"
#: models/badges.py:525
msgid "Necromancer"
msgstr "Negromante"
#: models/badges.py:548
-#, fuzzy
msgid "Citizen Patrol"
msgstr "Sempre in guardia"
@@ -3486,14 +3481,13 @@ msgid "Visited site every day for %(num)s days in a row"
msgstr ""
#: models/badges.py:732
-#, fuzzy
msgid "Commentator"
-msgstr "Documentazione"
+msgstr "Commentatore"
#: models/badges.py:736
#, fuzzy, python-format
msgid "Posted %(num_comments)s comments"
-msgstr "(%(comment_count)s commento)"
+msgstr "Inseriti (%(comment_count)s commenti"
#: models/badges.py:752
msgid "Taxonomist"
@@ -3512,53 +3506,62 @@ msgstr "Esperto"
msgid "Very active in one tag"
msgstr "Molto attivo in domande con lo stesso tag"
-#: models/meta.py:112
+#: models/content.py:549
+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
+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 "Mi spiace, questa domanda è stata cancellata e non è più accessibile"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
-#, fuzzy
+#: models/question.py:66
msgid "\" and more"
-msgstr "Scopri di più"
+msgstr "\" ed altro ancora"
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "Mi spiace, questa domanda è stata cancellata e non è più accessibile"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s ha modificato la sua domanda"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s ha/hanno commentato la domanda"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s ha/hanno commentato alcune risposte"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s ha/hanno commentato una risposta"
@@ -3571,8 +3574,8 @@ msgstr "<em>Modificato da un moderatore. Motivo:</em> %(reason)s"
#: models/repute.py:153
#, 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 ""
" %(username)s ha guadagnato %(points)s punti reputazione per i suoi "
"contributi alla domanda %(question_title)s"
@@ -3630,6 +3633,87 @@ msgstr "Ogni settimana"
msgid "No email"
msgstr "Mai"
+#: 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
+msgid ""
+"Sincerely,\n"
+"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
+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 ""
+"Se hai ricevuto questo messaggio per errore, basta che tu ignori questa e-"
+"mail. Ci scusiamo per il problema."
+
+#: skins/default/templates/feedback_email.txt:2
+#: skins/old/templates/feedback_email.txt:2
+#, fuzzy, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"Salve, questo è un messaggio di notifica del forum %(site_title)s.\n"
+
+#: 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."
+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"
@@ -3644,9 +3728,8 @@ msgid "Oops, apologies - there was some error"
msgstr ""
#: utils/decorators.py:109
-#, fuzzy
msgid "Please login to post"
-msgstr "Accedi o registrati"
+msgstr "Accedi o registrati per inserire domande"
#: utils/decorators.py:205
msgid "Spam was detected on your post, sorry for if this is a mistake"
@@ -3770,9 +3853,9 @@ msgid "You have %(votes_left)s votes left for today"
msgstr "Puoi votare ancora %(votes_left)s volte oggi"
#: views/commands.py:122
-#, fuzzy
msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "mi spiace, devi essere registrato per accettare una risposta"
+msgstr ""
+"Spiacenti, gli utenti anonimi non possono accedere ai messaggi in arrivo"
#: views/commands.py:192
msgid "Sorry, something is not right here..."
@@ -3801,144 +3884,123 @@ msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
#: views/commands.py:409
-#, fuzzy, python-format
+#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
-msgstr "Accedi o registrati"
+msgstr "Accedi per sottoscrivere i tag: %(tags)s"
#: views/commands.py:542
-#, fuzzy
msgid "Please sign in to vote"
-msgstr "Puoi accedere al tuo account da qui:"
+msgstr "Accedi per votare"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "Contatti forum Q&A"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Grazie per il tuo messaggio!"
-#: views/meta.py:92
+#: views/meta.py:94
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:131
-#, fuzzy, python-format
+#: views/readers.py:151
+#, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "%(q_num)s domanda"
-msgstr[1] "%(q_num)s domande"
+msgstr[0] "%(q_num)s domanda, taggata"
+msgstr[1] "%(q_num)s domande, taggate"
-#: views/readers.py:139
+#: 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:177
+#: 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:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "voto"
-msgstr[1] "voti"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "risposta"
-msgstr[1] "risposta"
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] "consultazione"
-msgstr[1] "consultazioni"
-
-#: views/readers.py:440
-#, fuzzy
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
-msgstr "Mi spiace, questa domanda è stata cancellata e non è più accessibile"
+msgstr "Mi spiace, questo commento è stata cancellato e non è più accessibile"
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr "modera questo utente"
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr "modera utente"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "profilo utente"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "profilo"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "attività recente"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "profilo utente &mdash; attività recente"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "commenti e risposte a domande"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "profilo utente &mdash; risposte"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "elenco dei voti dati"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "profilo utente &mdash; voti"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "punti reputazione"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "profilo utente &mdash; reputazione"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "domande preferite"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "profilo utente &mdash; domande preferite"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "i cambiamenti sono stati salvati"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "notifiche via e-mail cancellate"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "impostazioni notifiche via e-mail"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "profilo utente &mdash; notifiche via e-mail"
@@ -3961,14 +4023,12 @@ msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr "Errore nel caricamento del file. Contatta un amministratore."
#: views/writers.py:191
-#, fuzzy
msgid "Please log in to ask questions"
-msgstr "Ricorda, puoi sempre porre tu stesso una domanda!"
+msgstr "Accedi per fare una domanda"
#: views/writers.py:492
-#, fuzzy
msgid "Please log in to answer questions"
-msgstr "vedi domande senza risposta"
+msgstr "Accedi per rispondere alle domande"
#: views/writers.py:598
#, python-format
@@ -3976,13 +4036,13 @@ msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-"Gli utenti non registrati non possono lasciare commenti. <a href=\"%"
-"(sign_in_url)s\">Accedi o registrati</a>."
+"Gli utenti non registrati non possono lasciare commenti. <a href="
+"\"%(sign_in_url)s\">Accedi o registrati</a>."
#: views/writers.py:646
-#, fuzzy
msgid "Sorry, anonymous users cannot edit comments"
-msgstr "Mi spiace, gli utenti non registrati non possono caricare file."
+msgstr ""
+"Mi spiace, gli utenti non registrati non possono modificare i commenti."
#: views/writers.py:654
#, python-format
@@ -3990,24 +4050,517 @@ msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-"Gli utenti non registrati non possono cancellare commenti. <a href=\"%"
-"(sign_in_url)s\">Accedi o registrati</a>."
+"Gli utenti non registrati non possono cancellare commenti. <a href="
+"\"%(sign_in_url)s\">Accedi o registrati</a>."
#: views/writers.py:675
msgid "sorry, we seem to have some technical difficulties"
msgstr "Mi spiace, ci sono dei problemi tecnici"
+#~ msgid "Sites"
+#~ msgstr "Siti"
+
+#~ msgid "Documentation"
+#~ msgstr "Documentazione"
+
+#~ msgid "Change password"
+#~ msgstr "Cambia password"
+
+#~ msgid "Log out"
+#~ msgstr "Log out"
+
+#~ msgid "Home"
+#~ msgstr "Home"
+
+#~ msgid "Edit Group Settings"
+#~ msgstr "Modifica le impostazioni dei gruppi"
+
+#~ 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 "Settings included in %(name)s."
+#~ msgstr "Impostazioni incluse in %(name)s."
+
+#~ msgid "You don't have permission to edit values."
+#~ msgstr "Non hai i permessi per modificare i valori."
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "Modifica impostazioni del sito"
+
+#~ msgid "Livesettings are disabled for this site."
+#~ msgstr "I Livesettings sono disabilitati per questo sito."
+
#~ 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"
+#~ "All configuration options must be edited in the site settings.py file"
#~ msgstr ""
-#~ "Questa opzione attualmente definisce la frequenza di default degli update "
-#~ "via email nelle seguenti cinque categorie: domande poste dall'utente, "
-#~ "risposte dell'utente, domande selezionate individualmente, tutto il forum "
-#~ "(con filtri ai tag applicati individualmente), post che menzionano "
-#~ "l'utente e risposte ai commenti "
+#~ "Tutte le opzioni di configurazione devono essere modificate nel file "
+#~ "settings.py"
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "Impostazioni per i gruppi: %(name)s"
+
+#~ msgid "Uncollapse all"
+#~ msgstr "Espandi tutti"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Per favore inserisci username e password"
+
+#, fuzzy
+#~ msgid "(or select another login method above)"
+#~ msgstr "scegli una delle opzioni qui sopra"
+
+#, fuzzy
+#~ msgid "Sign in"
+#~ msgstr "signin/"
+
+#~ msgid "Change email"
+#~ msgstr "Cambia e-mail"
+
+#~ msgid "Save your email address"
+#~ msgstr "Salva il tuo indirizzo e-mail"
+
+#~ msgid "change %(email)s info"
+#~ msgstr ""
+#~ "Se vuoi usare un nuovo indirizzo per le<strong>e-mail di notifica</"
+#~ "strong>, \n"
+#~ "<span class=\"strong big\">inseriscilo qui sotto il nuovo indirizzo</"
+#~ "span>.<br>L'indirizzo corrente è <strong>%(email)s</strong>"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<span class='strong big'>Inserisci il tuo indirizzo e-mail qui sotto</"
+#~ "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."
+
+#~ 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 "
+#~ "%(email)s.</span> <strong>Clicca sul link contenuto nell'e-mail</strong> "
+#~ "per verificare il tuo indirizzo. La verifica dell'e-mail è necessaria "
+#~ "per l'utilizzo del forum. Se preferisci usare <strong>un altro indirizzo</"
+#~ "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"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr ""
+#~ "<span class='big strong'>Il tuo indirizzo e-mail è ora %(email)s.</span> "
+#~ "Gli aggiornamenti sulle domande di tuo interesse saranno spediti a questo "
+#~ "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-"
+#~ "mail!</span> Ora puoi <strong>scrivere domande</strong> e "
+#~ "<strong>risposte</strong>. Puoi inoltre <strong>seguire gli sviluppi</"
+#~ "strong> delle domande che più ti interessano: quando ci sono novità, ti "
+#~ "sarà spedita un'e-mail di notifica <strong>una volta al giorno</strong> o "
+#~ "meno."
+
+#~ msgid "email key not sent"
+#~ msgstr "E-mail di verifica non spedita"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "<span class='big strong'>Il tuo indirizzo %(email)s è già stato "
+#~ "verificato</span>, quindi l'e-mail non è stata spedita. Se necessario "
+#~ "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 "
+#~ "tuo account OpenID %(provider)s.</span> Imposta il <strong>nome "
+#~ "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>"
+
+#~ 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... l'utente %(username)s esiste già.</"
+#~ "span></p><p>Scegli un altro nome utente da visualizzare per il tuo "
+#~ "account OpenID %(provider)s. Inoltre, è necessario inserire "
+#~ "<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>"
+
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><p><span class=\"big strong\">&Egrave; la prima volta che accedi con "
+#~ "il tuo account OpenID %(provider)s.</span> </p><p>Puoi utilizzare il tuo "
+#~ "nome utente %(provider)s come <strong>nome visualizzato</strong> oppure "
+#~ "sceglierne uno nuovo.</p><p>Inoltre, è necessario inserire un "
+#~ "<strong>indirizzo e-mail</strong> valido. 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>"
+
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">&Egrave; la prima volta che accedi con il "
+#~ "tuo account Facebook.</span> Scegli il tuo <strong>nome visualizzato</"
+#~ "strong> e imposta 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>"
+
+#~ msgid "This account already exists, please use another."
+#~ msgstr "Questo nome utente è già in uso, scegline un altro."
+
+#~ msgid "Screen name label"
+#~ msgstr ""
+#~ "<strong>Nome visualizzato</strong> (<i>verrà mostrato agli altri utenti</"
+#~ "i>)"
+
+#~ msgid "Email address label"
+#~ msgstr ""
+#~ "<strong>Indirizzo e-mail</strong> (<i><strong>non</strong> verrà mostrato "
+#~ "agli altri utenti, dev'essere valido</i>)"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr ""
+#~ "<strong>Ricevi aggiornamenti via e-mail</strong> &mdash; questo aiuterà "
+#~ "la nostra comunità a crescere e diventare più utile.<br/>Normalmente "
+#~ "questo forum <span class='orange'>Q&amp;A</span> ti spedirà <strong>un'e-"
+#~ "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 "
+#~ "tag."
+
+#~ 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"
+#~ " "
+#~ 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"
+
+#~ 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?"
+
+#~ msgid "with openid it is easier"
+#~ msgstr ""
+#~ "Con OpenID non devi creare un nome utente e una password per ogni sito "
+#~ "che utilizzi."
+
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "Puoi riutilizzare in completa sicurezza le stesse credenziali per tutti i "
+#~ "siti abilitati."
+
+#~ msgid "openid is widely adopted"
+#~ msgstr ""
+#~ "Ci sono più di 160 milioni di account OpenID in uso. Più di 10.000 siti "
+#~ "utilizzano OpenID."
+
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID è basato su uno standard aperto, supportato da molte "
+#~ "organizzazioni."
+
+#~ msgid "Find out more"
+#~ msgstr "Scopri di più"
+
+#~ 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 "
+#~ "una password per questo forum qui. Però</span>, considera che questo sito "
+#~ "supporta anche la registrazione via <strong>OpenID</strong>. Con "
+#~ "<strong>OpenID</strong> puoi riutilizzare il tuo account su uno dei "
+#~ "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 "%(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"
@@ -4075,12 +4628,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Save edit"
#~ msgstr "Salva modifica"
-#~ msgid "Cancel"
-#~ msgstr "Annulla"
-
-#~ msgid "hide preview"
-#~ msgstr "nascondi anteprima"
-
#~ msgid "show preview"
#~ msgstr "mostra anteprima"
@@ -4121,8 +4668,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#, 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"
+#~ "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 "
@@ -4233,8 +4780,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ 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 "
+#~ "- 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 "
@@ -4245,8 +4792,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "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 "
+#~ "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 "
@@ -4383,24 +4930,12 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "<span class='big strong'>Caro visitatore</span>, ci interessa moltissimo "
#~ "la tua opinione. Scrivi i tuoi commenti qui sotto."
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "inserisci un indirizzo e-mail valido"
-
#~ msgid "(this field is required)"
#~ msgstr "(campo obbligatorio)"
#~ msgid "Send Feedback"
#~ msgstr "Invia"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Hello, this is a %(site_title)s forum feedback message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Salve, questo è un messaggio di notifica del forum %(site_title)s.\n"
-
#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
#~ msgstr "<p>Caro %(receiving_user_name)s,</p>"
@@ -4484,27 +5019,23 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgstr "Riapri questa domanda"
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "medaglie:"
-
-#~ msgid "previous"
-#~ msgstr "precedente"
-
-#~ msgid "current page"
-#~ msgstr "pagina corrente"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "pagina %(num)s"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "Mi piace questo messaggio (clicca una seconda volta per annullare)"
-#~ msgid "next page"
-#~ msgstr "pagina successiva"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "Mi piace questa risposta (clicca una seconda volta per annullare)"
-#~ msgid "posts per page"
-#~ msgstr "post per pagina"
+#~ msgid "current number of votes"
+#~ msgstr "numero attuale di voti"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "lo stato dell'utente %(username)s è \"%(status)s\""
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr ""
+#~ "Non mi piace questo messaggio (clicca una seconda volta per annullare)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr ""
+#~ "Non mi piace questa risposta (clicca una seconda volta per annullare)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4528,9 +5059,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "delete this comment"
#~ msgstr "cancella questo commento"
-#~ msgid "edit"
-#~ msgstr "modifica"
-
#~ msgid "add comment"
#~ msgstr "aggiungi commento"
@@ -4548,14 +5076,23 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgstr[1] "visualizza <strong>%(counter)s</strong> commenti aggiuntivi"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "campo obbligatorio"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "lo stato dell'utente %(username)s è \"%(status)s\""
-#~ msgid "(required)"
-#~ msgstr "(campo obbligatorio)"
+#~ msgid "previous"
+#~ msgstr "precedente"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "attiva/disattiva l'anteprima del codice Markdown"
+#~ 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"
@@ -4570,6 +5107,10 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ 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"
@@ -4583,230 +5124,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Privacy policy"
#~ msgstr "Regole per la privacy"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "Mi piace questo messaggio (clicca una seconda volta per annullare)"
-
-#~ msgid "current number of votes"
-#~ msgstr "numero attuale di voti"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr ""
-#~ "Non mi piace questo messaggio (clicca una seconda volta per annullare)"
-
-#~ msgid "retag"
-#~ msgstr "modifica i tag"
-
-#~ msgid "reopen"
-#~ msgstr "riapri"
-
-#~ msgid "close"
-#~ msgstr "chiudi"
-
-#~ 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"
-
-#~ msgid "delete"
-#~ msgstr "cancella"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" 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"
-
-#, 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 "i like this answer (click again to cancel)"
-#~ msgstr "Mi piace questa risposta (clicca una seconda volta per annullare)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr ""
-#~ "Non mi piace questa risposta (clicca una seconda volta per annullare)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr ""
-#~ "segna questa risposta tra le preferite (clicca una seconda volta per "
-#~ "annullare)"
-
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "%(question_author)s ha scelto questa come risposta migliore"
-
-#~ msgid "answer permanent link"
-#~ msgstr "link permanente alla risposta"
-
-#~ msgid "permanent link"
-#~ msgstr "link permanente"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Rispondi alla domanda"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "oppure"
-
-#~ msgid "email"
-#~ msgstr "e-mail:"
-
-#~ 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 ""
-#~ "<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
-#~ "settimana"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "(nota: puoi <strong><a href='%(profile_url)s?"
-#~ "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."
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Accedi/registrati per scrivere la tua risposta"
-
-#~ msgid "Your answer"
-#~ msgstr "La tua risposta"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Rispondi per primo!"
-
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr ""
-#~ "<span class='strong big'>Comincia pure a rispondere </span> - la tua "
-#~ "risposta verrà memorizzata e pubblicata non appena accederai o "
-#~ "registrerai un nuovo account. Cerca di dare una <strong>vera risposta</"
-#~ "strong>, per eventuali discussioni <strong>utilizza i commenti</strong> e "
-#~ "<strong>ricordati di votare</strong> (non appena hai fatto il login)!"
-
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr ""
-#~ "<span class='big strong'>Rispondi pure alla tua domanda</span>, ma cerca "
-#~ "di dare una <strong>vera risposta</strong>. Puoi sempre "
-#~ "<strong>modificare la tua domanda</strong>. <strong>Usa i commenti per "
-#~ "discutere</strong> e <strong>ricordati di votare :)</strong> per le "
-#~ "risposte migliori (e per quelle peggiori!)"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr ""
-#~ "<span class='big strong'>Cerca di dare una vera risposta</span>. Se vuoi "
-#~ "solo aggiungere un commento a una domanda/risposta, <strong>usa i "
-#~ "commenti</strong>. Ricorda che puoi <strong>modificare una vecchia "
-#~ "risposta</strong> invece di scriverne una nuova. Inoltre, "
-#~ "<strong>ricordati di votare</strong> &mdash; ci permette di individuare "
-#~ "facilmente le domande e risposte migliori!"
-
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Accedi/registrati per scrivere la tua risposta"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Rispondi alla tua domanda"
-
-#~ msgid "Answer the question"
-#~ msgstr "Rispondi alla domanda"
-
-#, 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 tags"
-#~ msgstr "Tag"
-
-#~ 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 "Edit question"
#~ msgstr "Modifica domanda"
@@ -4865,9 +5182,21 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ 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"
@@ -4901,643 +5230,241 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Nothing found."
#~ msgstr "Nessun utente trovato"
-#~ msgid "Change email"
-#~ msgstr "Cambia e-mail"
-
-#~ msgid "Save your email address"
-#~ msgstr "Salva il tuo indirizzo e-mail"
-
-#~ msgid "change %(email)s info"
-#~ msgstr ""
-#~ "Se vuoi usare un nuovo indirizzo per le<strong>e-mail di notifica</"
-#~ "strong>, \n"
-#~ "<span class=\"strong big\">inseriscilo qui sotto il nuovo indirizzo</"
-#~ "span>.<br>L'indirizzo corrente è <strong>%(email)s</strong>"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<span class='strong big'>Inserisci il tuo indirizzo e-mail qui sotto</"
-#~ "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."
-
-#~ 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 "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 %"
-#~ "(email)s.</span> <strong>Clicca sul link contenuto nell'e-mail</strong> "
-#~ "per verificare il tuo indirizzo. La verifica dell'e-mail è necessaria "
-#~ "per l'utilizzo del forum. Se preferisci usare <strong>un altro indirizzo</"
-#~ "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"
-
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr ""
-#~ "<span class='big strong'>Il tuo indirizzo e-mail è ora %(email)s.</span> "
-#~ "Gli aggiornamenti sulle domande di tuo interesse saranno spediti a questo "
-#~ "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-"
-#~ "mail!</span> Ora puoi <strong>scrivere domande</strong> e "
-#~ "<strong>risposte</strong>. Puoi inoltre <strong>seguire gli sviluppi</"
-#~ "strong> delle domande che più ti interessano: quando ci sono novità, ti "
-#~ "sarà spedita un'e-mail di notifica <strong>una volta al giorno</strong> o "
-#~ "meno."
+#~ msgid "with %(author_name)s's contributions"
+#~ msgstr "contenenti messaggi di %(author_name)s"
-#~ msgid "email key not sent"
-#~ msgstr "E-mail di verifica non spedita"
+#~ msgid "Search tips:"
+#~ msgstr "Consigli per la ricerca:"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr ""
-#~ "<span class='big strong'>Il tuo indirizzo %(email)s è già stato "
-#~ "verificato</span>, quindi l'e-mail non è stata spedita. Se necessario "
-#~ "puoi <a href='%(change_link)s'>cambiare</a> l'indirizzo usato per le "
-#~ "notifiche."
+#~ msgid "reset author"
+#~ msgstr "azzera autore"
#, 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 "
-#~ "tuo account OpenID %(provider)s.</span> Imposta il <strong>nome "
-#~ "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>"
-
-#~ 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... l'utente %(username)s esiste già.</"
-#~ "span></p><p>Scegli un altro nome utente da visualizzare per il tuo "
-#~ "account OpenID %(provider)s. Inoltre, è necessario inserire "
-#~ "<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>"
-
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><p><span class=\"big strong\">&Egrave; la prima volta che accedi con "
-#~ "il tuo account OpenID %(provider)s.</span> </p><p>Puoi utilizzare il tuo "
-#~ "nome utente %(provider)s come <strong>nome visualizzato</strong> oppure "
-#~ "sceglierne uno nuovo.</p><p>Inoltre, è necessario inserire un "
-#~ "<strong>indirizzo e-mail</strong> valido. 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>"
-
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">&Egrave; la prima volta che accedi con il "
-#~ "tuo account Facebook.</span> Scegli il tuo <strong>nome visualizzato</"
-#~ "strong> e imposta 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>"
-
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Questo nome utente è già in uso, scegline un altro."
+#~ msgid " or "
+#~ msgstr "oppure"
-#~ msgid "Screen name label"
-#~ msgstr ""
-#~ "<strong>Nome visualizzato</strong> (<i>verrà mostrato agli altri utenti</"
-#~ "i>)"
+#~ msgid "reset tags"
+#~ msgstr "azzera i tag"
-#~ msgid "Email address label"
-#~ msgstr ""
-#~ "<strong>Indirizzo e-mail</strong> (<i><strong>non</strong> verrà mostrato "
-#~ "agli altri utenti, dev'essere valido</i>)"
+#~ msgid "start over"
+#~ msgstr "ricomincia da capo"
-#~ msgid "receive updates motivational blurb"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
#~ msgstr ""
-#~ "<strong>Ricevi aggiornamenti via e-mail</strong> &mdash; questo aiuterà "
-#~ "la nostra comunità a crescere e diventare più utile.<br/>Normalmente "
-#~ "questo forum <span class='orange'>Q&amp;A</span> ti spedirà <strong>un'e-"
-#~ "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"
+#~ "- per espandere, o raffinare la tua ricerca aggiungendo altri tag o "
+#~ "modificando le parole chiave"
-#~ 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 "
-#~ "tag."
+#~ msgid "Search tip:"
+#~ msgstr "Suggerimenti per la ricerca:"
-#~ msgid "create account"
-#~ msgstr "registrati"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "aggiungi tag e parole chiave per restringere il campo"
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "Grazie per esserti registrato sul nostro forum Q&A!"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "Non ci sono domande senza risposte"
-#~ msgid "Your account details are:"
-#~ msgstr "Il tuo account è:"
+#, fuzzy
+#~ msgid "No questions here. "
+#~ msgstr "Non ci sono domande preferite"
-#~ msgid "Username:"
-#~ msgstr "Nome utente:"
+#, fuzzy
+#~ msgid "Please follow some questions or follow some users."
+#~ msgstr "Aggiungi qualche domanda alla tua lista di domande preferite"
-#~ msgid "Password:"
-#~ msgstr "Password:"
+#~ msgid "You can expand your search by "
+#~ msgstr "puoi espandere la tua ricerca"
-#~ msgid "Please sign in here:"
-#~ msgstr "Puoi accedere al tuo account da qui:"
+#~ msgid "resetting author"
+#~ msgstr "azzerando l'autore"
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr ""
-#~ "Cordialmente,\n"
-#~ " l'Amministratore"
+#~ msgid "resetting tags"
+#~ msgstr "azzerando i tag"
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Benvenuto sul forum Q&A"
+#~ msgid "starting over"
+#~ msgstr "ricominciando da capo"
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr "Per utilizzare il forum, clicca sul collegamento qui sotto:"
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "Ricorda, puoi sempre porre tu stesso una domanda!"
-#~ msgid "Following the link above will help us verify your email address."
-#~ msgstr ""
-#~ "Cliccando sul collegamento qui sopra, verificherai il tuo indirizzo e-"
-#~ "mail."
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "Non hai trovato quello che cercavi?"
-#~ 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 ""
-#~ "Se hai ricevuto questo messaggio per errore, basta che tu ignori questa e-"
-#~ "mail. Ci scusiamo per il problema."
+#~ msgid "Please, post your question!"
+#~ msgstr "Poni tu stesso la domanda!"
-#~ msgid "Logout"
-#~ msgstr "Logout"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "sottoscrivi al feed delle domande"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "scegli una delle opzioni qui sopra"
+#~ 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 "Sign in"
-#~ msgstr "signin/"
+#~ 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"
-#~ msgid "User login"
-#~ msgstr "Accesso utente"
+#, 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"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
+#~ " %(counter)s Answer\n"
#~ " "
-#~ msgstr ""
+#~ msgid_plural ""
#~ "\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"
+#~ " %(counter)s Answers\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>"
-
-#, 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"
-
-#~ msgid "Login"
-#~ msgstr "Accedi"
+#~ msgstr[0] ""
+#~ "\n"
+#~ "%(counter)s Risposta:"
+#~ msgstr[1] ""
+#~ "\n"
+#~ "%(counter)s Risposte:"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "New password created"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "mostra prima le risposte più vecchie"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "per favore, digita di nuovo la password"
+#~ msgid "oldest answers"
+#~ msgstr "più vecchie"
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "Utente approvato"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "mostra prima le risposte più nuove"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "ultimo accesso"
+#~ msgid "newest answers"
+#~ msgstr "più nuove"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Account eliminato."
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "mostra prima le risposte più votate"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Hai altre domande?"
+#~ msgid "popular answers"
+#~ msgstr "più votate"
-#, fuzzy
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "Per favore inserisci la tua password"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Rispondi alla tua domanda"
#, fuzzy
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr "Per favore inserisci la tua password"
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Accedi/registrati per scrivere la tua risposta"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Scegli una nuova password"
+#~ msgid "Your answer"
+#~ msgstr "La tua risposta"
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Scegli una nuova password"
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "Perché usare OpenID?"
-
-#~ msgid "with openid it is easier"
-#~ msgstr ""
-#~ "Con OpenID non devi creare un nome utente e una password per ogni sito "
-#~ "che utilizzi."
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Per favore accetta la migliore risposta per questa domanda:"
-#~ msgid "reuse openid"
+#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
-#~ "Puoi riutilizzare in completa sicurezza le stesse credenziali per tutti i "
-#~ "siti abilitati."
+#~ "<span class='strong big'>Comincia pure a rispondere </span> - la tua "
+#~ "risposta verrà memorizzata e pubblicata non appena accederai o "
+#~ "registrerai un nuovo account. Cerca di dare una <strong>vera risposta</"
+#~ "strong>, per eventuali discussioni <strong>utilizza i commenti</strong> e "
+#~ "<strong>ricordati di votare</strong> (non appena hai fatto il login)!"
-#~ msgid "openid is widely adopted"
+#~ msgid "answer your own question only to give an answer"
#~ msgstr ""
-#~ "Ci sono più di 160 milioni di account OpenID in uso. Più di 10.000 siti "
-#~ "utilizzano OpenID."
+#~ "<span class='big strong'>Rispondi pure alla tua domanda</span>, ma cerca "
+#~ "di dare una <strong>vera risposta</strong>. Puoi sempre "
+#~ "<strong>modificare la tua domanda</strong>. <strong>Usa i commenti per "
+#~ "discutere</strong> e <strong>ricordati di votare :)</strong> per le "
+#~ "risposte migliori (e per quelle peggiori!)"
-#~ msgid "openid is supported open standard"
+#~ msgid "please only give an answer, no discussions"
#~ msgstr ""
-#~ "OpenID è basato su uno standard aperto, supportato da molte "
-#~ "organizzazioni."
-
-#~ msgid "Find out more"
-#~ msgstr "Scopri di più"
-
-#~ msgid "Get OpenID"
-#~ msgstr "Ottieni un OpenID"
+#~ "<span class='big strong'>Cerca di dare una vera risposta</span>. Se vuoi "
+#~ "solo aggiungere un commento a una domanda/risposta, <strong>usa i "
+#~ "commenti</strong>. Ricorda che puoi <strong>modificare una vecchia "
+#~ "risposta</strong> invece di scriverne una nuova. Inoltre, "
+#~ "<strong>ricordati di votare</strong> &mdash; ci permette di individuare "
+#~ "facilmente le domande e risposte migliori!"
-#~ msgid "Signup"
-#~ msgstr "Accedi"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Accedi/registrati per scrivere la tua risposta"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "scegli una delle opzioni qui sopra"
+#~ msgid "Answer the question"
+#~ msgstr "Rispondi alla domanda"
#, 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 "
-#~ "una password per questo forum qui. Però</span>, considera che questo sito "
-#~ "supporta anche la registrazione via <strong>OpenID</strong>. Con "
-#~ "<strong>OpenID</strong> puoi riutilizzare il tuo account su uno dei "
-#~ "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"
+#~ 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"
+#~ msgid "email"
+#~ msgstr "e-mail:"
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Il tuo account è:"
+#~ msgid "Question tools"
+#~ msgstr "Tag"
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "i cambiamenti sono stati salvati"
+#~ msgid "click to unfollow this question"
+#~ msgstr "clicca qui per vedere le domande con più risposte"
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
+#~ msgid "click to follow this question"
+#~ msgstr "clicca qui per vedere le domande con più risposte"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "ha cancellato una risposta"
+#~ msgid "email the updates"
+#~ msgstr "notifiche via e-mail cancellate"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "ha cancellato una risposta"
-
-#~ 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"
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "sottoscrivi al feed delle domande"
#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*corsivo* o _corsivo_"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**grassetto** o __grassetto__"
-
-#~ msgid "link"
-#~ msgstr "collegamento"
+#~ msgid "subsribe to rss feed"
+#~ msgstr "sottoscrivi al feed delle domande"
-#~ msgid "text"
-#~ msgstr "testo"
+#~ msgid "question asked"
+#~ msgstr "Chiesta il"
-#~ msgid "image"
-#~ msgstr "immagine"
+#~ msgid "question was seen"
+#~ msgstr "domanda consultata"
-#~ msgid "numbered list:"
-#~ msgstr "lista numerata:"
+#~ msgid "times"
+#~ msgstr "volte"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "sono supportati anche alcuni semplici tag HTML"
+#~ msgid "last updated"
+#~ msgstr "Aggiornata l'ultima voltail"
-#~ msgid "learn more about Markdown"
-#~ msgstr "informazioni su Markdown"
+#~ msgid "Related questions"
+#~ msgstr "Domande simili"
-#~ msgid "login to post question info"
+#~ msgid "Notify me once a day when there are any new answers"
#~ 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."
+#~ "<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
+#~ "giorno"
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#~ msgid "Notify me weekly when there are any new answers"
#~ 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."
-
-#~ msgid "Login/signup to post your question"
-#~ msgstr "Accedi/Registrati per porre una domanda"
-
-#~ msgid "Ask your question"
-#~ msgstr "Chiedi"
-
-#, 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"
+#~ "<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
+#~ "settimana"
#, 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"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr ""
+#~ "<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
+#~ "settimana"
-#, 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"
-
-#~ 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 "questions"
-#~ msgstr "domande"
-
-#~ msgid "users"
-#~ msgstr "utenti"
-
-#~ msgid "badges"
-#~ msgstr "medaglie"
-
-#~ msgid "ask a question"
-#~ msgstr "chiedi"
-
-#~ msgid "logout"
-#~ msgstr "logout"
-
-#~ msgid "login"
-#~ msgstr "login"
-
-#~ msgid "settings"
-#~ msgstr "impostazioni"
-
-#~ msgid "search"
-#~ msgstr "cerca"
-
-#~ 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 "Interesting tags"
-#~ msgstr "Tag preferiti"
-
-#~ msgid "Add"
-#~ msgstr "Aggiungi"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Tag ignorati"
-
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "Scegli il tag filtro per l'email"
-
-#~ 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"
-
-#~ msgid "rss feed"
-#~ msgstr "feed RSS"
-
-#~ 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."
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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 star (bookmark) 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 "Contributors"
-#~ msgstr "Utenti attivi"
-
-#~ msgid "Related tags"
-#~ msgstr "Tag"
-
-#~ msgid "In:"
-#~ msgstr "In:"
-
-#~ msgid "see unanswered questions"
-#~ msgstr "vedi domande senza risposta"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "vedi le tue domande preferite"
+#~ "(nota: puoi <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>modificare</a></strong> la frequenza con cui "
+#~ "ricevi gli aggiornamenti)"
-#~ msgid "Sort by:"
-#~ msgstr "Ordina per:"
+#~ 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"
@@ -5586,6 +5513,10 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ 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"
@@ -5612,6 +5543,10 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "update profile"
#~ msgstr "aggiorna profilo"
+#, fuzzy
+#~ msgid "manage login methods"
+#~ msgstr "Accedi o registrati per inserire domande"
+
#~ msgid "real name"
#~ msgstr "nome vero"
@@ -5663,6 +5598,9 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Subtract"
#~ msgstr "Sottrai"
+#~ msgid "Add"
+#~ msgstr "Aggiungi"
+
#~ msgid "Send message to %(username)s"
#~ msgstr "Spedisci messaggio a %(username)s"
@@ -5754,8 +5692,9 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Answer to:"
#~ msgstr "consigli per le risposte"
+#, fuzzy
#~ msgid "User profile"
-#~ msgstr "Profilo utente"
+#~ msgstr "profilo utente"
#~ msgid "graph of user reputation"
#~ msgstr "registro dei punti reputazione"
@@ -5776,6 +5715,255 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ 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"
+#~ " "
+#~ 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."
+
+#~ 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 "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "consultazione"
+#~ msgstr[1] "consultazioni"
+
+#, fuzzy
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "risposta"
+#~ msgstr[1] "risposta"
+
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "voto"
+#~ msgstr[1] "voti"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "vedi domande senza risposta"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "vedi le tue domande preferite"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "medaglie:"
+
+#~ msgid "logout"
+#~ msgstr "logout"
+
+#~ msgid "login"
+#~ msgstr "login"
+
+#~ msgid "settings"
+#~ msgstr "impostazioni"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "inserisci un indirizzo e-mail valido"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "Mi piace questo messaggio (clicca una seconda volta per annullare)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr ""
+#~ "Non mi piace questo messaggio (clicca una seconda volta per annullare)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr ""
+#~ "Questa domanda è stata chiusa per il seguente motivo: \"%(close_reason)s"
+#~ "\" da"
+
+#, 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 "mark this answer as favorite (click again to undo)"
+#~ msgstr ""
+#~ "segna questa risposta tra le preferite (clicca una seconda volta per "
+#~ "annullare)"
+
+#, fuzzy
+#~ msgid "Question tags"
+#~ msgstr "Domande"
+
+#~ msgid "questions"
+#~ msgstr "domande"
+
+#~ msgid "search"
+#~ msgstr "cerca"
+
+#~ msgid "rss feed"
+#~ msgstr "feed RSS"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr "Aggiungi qualche domanda alla tua lista di domande preferite"
+
+#~ 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):"
+
+#~ msgid "Keys to connect the site with external services like Facebook, etc."
+#~ msgstr ""
+#~ "Chiavi per connettere il sito con servizi esterni come Facebook, ecc."
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "Reputazione minima per eseguire operazioni"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "Siti"
+
+#~ msgid "Q&A forum website parameters and urls"
+#~ msgstr "Parametri ed url per il Q&A forum"
+
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "Impostazioni della skin e dell'interfaccia utente"
+
+#~ msgid "Limits applicable to votes and moderation flags"
+#~ msgstr "Limiti riguardanti i voti e i post segnati come inappropriati"
+
+#~ msgid "Setting groups"
+#~ msgstr "Gruppi di impostazioni"
+
+#~ 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 ""
+#~ "Questa opzione attualmente definisce la frequenza di default degli update "
+#~ "via email nelle seguenti cinque categorie: domande poste dall'utente, "
+#~ "risposte dell'utente, domande selezionate individualmente, tutto il forum "
+#~ "(con filtri ai tag applicati individualmente), post che menzionano "
+#~ "l'utente e risposte ai commenti "
+
#~ msgid "community wiki"
#~ msgstr "domanda comunitaria"
@@ -6580,8 +6768,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgstr "Login attraverso un sito esterno"
#~ msgid ""
-#~ "how to login with password through external login website or use %"
-#~ "(feedback_url)s"
+#~ "how to login with password through external login website or use "
+#~ "%(feedback_url)s"
#~ msgstr ""
#~ "Inserisci qui le informazioni per il login attraverso un sito esterno o "
#~ "utilizza %(feedback_url)s"
@@ -6608,8 +6796,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "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 ""
-#~ "Qualcuno sta cercando di recuperare la tua password per il sito %"
-#~ "(site_url)s.\n"
+#~ "Qualcuno sta cercando di recuperare la tua password per il sito "
+#~ "%(site_url)s.\n"
#~ "Se non si tratta di te, puoi ignorare questo messaggio."
#~ msgid ""
@@ -6711,8 +6899,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgstr "subscriptions"
#~ msgid ""
-#~ "go to %(email_settings_url)s to change frequency of email updates or %"
-#~ "(admin_email)s administrator"
+#~ "go to %(email_settings_url)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 "
diff --git a/askbot/locale/it/LC_MESSAGES/djangojs.mo b/askbot/locale/it/LC_MESSAGES/djangojs.mo
index e51c1286..6cc48b71 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 ce10412c..9f1671f6 100644
--- a/askbot/locale/it/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/it/LC_MESSAGES/djangojs.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-08 02:27-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-11-27 01:59-0600\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"
"MIME-Version: 1.0\n"
@@ -17,49 +17,331 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: skins/default/media/js/post.js:532
-msgid "Follow"
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+msgstr ""
+
+#: skins/common/media/js/post.js:28
+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
+msgid "insufficient privilege"
+msgstr "privilegi non sufficienti"
+
+#: skins/common/media/js/post.js:283
+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
+msgid "please login"
+msgstr "Per favore effettua il login"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "Gli utenti anonimi non possono votare "
+
+#: skins/common/media/js/post.js:294
+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
+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
+msgid "confirm delete"
+msgstr "conferma la cancellazione"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "Gli utenti anonimi non possono cancellare/annullare la cancellazione"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "Post recuperato"
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr "Post eliminato"
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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] ""
-msgstr[1] ""
+msgstr[0] "seguito da %s persona"
+msgstr[1] "seguito da %s persone"
-#: skins/default/media/js/post.js:546
+#: 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
+msgid "add comment"
+msgstr "OK"
+
+#: skins/common/media/js/post.js:960
+msgid "save comment"
msgstr ""
-#: skins/default/media/js/post.js:1613
-msgid "Please enter question title (>10 characters)"
+#: 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/default/media/js/tag_selector.js:15
-msgid "Tag \"<span></span>\" matches:"
+#: skins/common/media/js/post.js:1109
+msgid "confirm abandon comment"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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
+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
msgid "and %s more, not shown..."
+msgstr "e altre %s non mostrate..."
+
+#: skins/common/media/js/user.js:14
+msgid "Please select at least one item"
msgstr ""
-#: skins/default/media/js/user.js:129
+#: 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
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
-msgstr ""
+msgstr "<a href=\"%(signin_url)s\">Entra</a> per seguire %(username)s"
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
-msgstr ""
+msgstr "non seguire %s"
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
-msgstr ""
+msgstr "stai seguendo %s"
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
+#, c-format
msgid "follow %s"
+msgstr "segui %s"
+
+#: skins/common/media/js/utils.js:43
+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
+msgid "bold"
+msgstr "grassetto"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "corsivo"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "Link"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "cita"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "Testo preformattato"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "Immagine"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "Lista numerata"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "Lista"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "Titolo"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "barra orizzontale"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "annulla"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "Esegui nuovamente"
+
+#: skins/common/media/js/wmd/wmd.js:53
+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
+msgid "enter url"
+msgstr "inserisci l'indirizzo web, e.g. <br />http://www.askbot.org/ </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 ""
+
+#: 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/ja/LC_MESSAGES/django.mo b/askbot/locale/ja/LC_MESSAGES/django.mo
index efb75cc8..11bf5ff6 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 e1a0798b..0bf0acb7 100644
--- a/askbot/locale/ja/LC_MESSAGES/django.po
+++ b/askbot/locale/ja/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: exceptions.py:13
@@ -132,20 +132,20 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
#, fuzzy
msgid "suspended"
msgstr "æ›´æ–°æ—¥"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -157,7 +157,7 @@ msgstr ""
"--\n"
"Q&A フォーラム管ç†"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr ""
@@ -204,527 +204,576 @@ msgid "Message text"
msgstr "メッセージ本文:"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "åå‰ï¼š"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "メールアドレス(ã»ã‹ã®ã²ã¨ã«ã¯éžå…¬é–‹ï¼‰ï¼š"
+#, fuzzy
+msgid "Email:"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã§ï¼š"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "メッセージ:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "匿å"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯gravatorã«ãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "実å"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "ウェブサイト"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "生年月日"
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "表示ã•ã‚Œã¾ã›ã‚“ã€å¹´é½¢ã®è¨ˆç®—ã«åˆ©ç”¨ã—ã¾ã™ã€åž‹å¼ï¼šYYYY-MM-DD"
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr "プロファイル"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "スクリーンå"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç™»éŒ²æ¸ˆã¿ã§ã™ã€ã»ã‹ã®ã‚‚ã®ã‚’使ã£ã¦ä¸‹ã•ã„"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¿ã‚°ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "自分ã‹ã‚‰ã®è³ªå•"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "自分ã‹ã‚‰ã®å›žç­”"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "個人的ã«é¸æŠžã•ã‚ŒãŸ"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "フォーラム全体(タグã§ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã•ã‚ŒãŸï¼‰"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "よã—ã€ã¯ã˜ã‚よã†ï¼"
-#: forms.py:1086
+#: forms.py:1116
#, fuzzy
msgid "no community email please, thanks"
msgstr "OSAQコミュニティ電å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—ã§"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "上記ã‹ã‚‰ä¸€ã¤é¸æŠžã—ã¦ãã ã•ã„"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr ""
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr ""
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr ""
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr ""
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr ""
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr ""
-#: 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: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/"
msgstr ""
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr ""
-#: urls.py:88
+#: urls.py:92
#, fuzzy
msgid "retag/"
msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr ""
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr ""
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr ""
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr ""
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr ""
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr ""
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "メール登録設定"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr ""
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr ""
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr ""
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr ""
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr ""
-#: conf/badges.py:12
+#: 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 ""
+
+#: conf/badges.py:13
#, fuzzy
msgid "Badge settings"
msgstr "設定"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
#, fuzzy
msgid "Nice Question: minimum upvotes for the question"
msgstr "Tags"
-#: conf/badges.py:84
+#: conf/badges.py:86
#, fuzzy
msgid "Good Question: minimum upvotes for the question"
msgstr "Tags"
-#: conf/badges.py:93
+#: conf/badges.py:95
#, fuzzy
msgid "Great Question: minimum upvotes for the question"
msgstr "Tags"
-#: conf/badges.py:102
+#: conf/badges.py:104
#, fuzzy
msgid "Popular Question: minimum views"
msgstr "人気ã®è³ªå•"
-#: conf/badges.py:111
+#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
msgstr "å“越ã—ãŸè³ªå•"
-#: conf/badges.py:120
+#: conf/badges.py:122
#, fuzzy
msgid "Famous Question: minimum views"
msgstr "è‘—åãªè³ªå•"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-#: conf/badges.py:201
+#: conf/badges.py:203
#, fuzzy
msgid "Stellar Question: minimum stars"
msgstr "スター質å•"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
#, fuzzy
msgid "Email and email alert settings"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr "Welcome to the Q&A forum"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
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:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
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:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+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
+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
+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
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
#, fuzzy
msgid "Allow only one account per email address"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« <i>(éžå…¬é–‹)</i>"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -732,11 +781,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -744,135 +793,135 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "パスワードを変更ã™ã‚‹"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -880,227 +929,226 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "質å•ã¸ã®å›žç­”ã«ãªã£ã¦ã„ã¾ã›ã‚“"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "æ›´æ–°ã•ã‚ŒãŸã‚¿ã‚°"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "ã‚¿ã‚°"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
#, fuzzy
msgid "Limit time to edit comments"
msgstr "%s 回コメントã—ãŸ"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "unanswered questions"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "設定"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "ホームã«æˆ»ã‚‹"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1108,43 +1156,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1153,11 +1201,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1167,174 +1215,174 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
#, fuzzy
msgid "Upvote"
msgstr "投票"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
#, fuzzy
msgid "Downvote"
msgstr "下ã’"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "ã‚ãªãŸè‡ªèº«ã®è³ªå•ã«å›žç­”ã™ã‚‹"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "ã‚らゆる回答を編集ã™ã‚‹"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
#, fuzzy
msgid "Flag offensive"
msgstr "侮辱的ã¨å°ã‚’付ã‘ã‚‹"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
#, fuzzy
msgid "Leave comments"
msgstr "コメントを加ãˆã‚‹"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
#, fuzzy
msgid "Delete comments posted by others"
msgstr "コメントãŒæŠ•ç¨¿ã•ã‚ŒãŸã¨ã"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
#, fuzzy
msgid "Delete questions and answers posted by others"
msgstr "ã‚らゆる質å•ã¨å›žç­”を削除ã—ã€ã»ã‹ã®ãƒ¢ãƒ‡ãƒ¬ãƒ¼ãƒˆä½œæ¥­ã‚’実行ã™ã‚‹"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr ""
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
#, fuzzy
msgid "Close own questions"
msgstr "質å•ã‚’閉鎖ã™ã‚‹"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
#, fuzzy
msgid "Reopen own questions"
msgstr "å†é–‹ã•ã‚ŒãŸè³ªå•"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
#, fuzzy
msgid "Edit community wiki posts"
msgstr "コミュニティー wiki 質å•ã‚’編集ã™ã‚‹"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
#, fuzzy
msgid "View offensive flags"
msgstr "ä¸å¿«å°"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
#, fuzzy
msgid "Close questions asked by others"
msgstr "タグ付ã‘ã•ã‚ŒãŸè³ªå•ã‚’ã¿ã‚‹"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
#, fuzzy
msgid "Gain for the author of accepted answer"
msgstr "個ã®è³ªå•ãŒå›žç­”募集中"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
#, fuzzy
msgid "Gain for accepting best answer"
msgstr "ベストアンサーå°"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1342,44 +1390,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1387,51 +1435,52 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "ユーザープロファイル"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "ã‚¿ã‚°"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "関係ã—ãŸè³ªå•"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "サイトã®çŠ¶æ…‹"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1439,53 +1488,53 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
#, fuzzy
msgid "Site title for the Q&A forum"
msgstr "Q&amp;Aフォーマルã‹ã‚‰ã®ãŠã—らã›ã§ã™"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
#, fuzzy
msgid "Feedback site URL"
msgstr "フィードãƒãƒƒã‚¯"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1598,33 +1647,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1632,41 +1681,41 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
#, fuzzy
msgid "Select skin"
msgstr "改訂をé¸æŠžã™ã‚‹"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1678,11 +1727,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1691,21 +1740,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1714,21 +1763,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1737,19 +1786,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1760,135 +1809,167 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr "<strong>最新ã®</strong>質å•ã‹ã‚‰è¡¨ç¤ºã—ã¦ã¾ã™ã€‚"
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: 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 ""
+
+# "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ãƒ—ロファイルã¨ã—ã¦å€‹äººã‚’åŒå®šã—ã†ã‚‹æƒ…報を表示ã™ã‚‹ã“ã¨ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+# "フォーラムã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒç„¡ã„ã‹ãŽã‚Šãã®ã‚ˆã†ãªæƒ…報を表示ã™ã‚‹äº‹ã¯ã‚ã‚Šã¾ã›ã‚“。"
+# "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 " "
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
# "クッキー"
-#: conf/user_settings.py:11
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr " "
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« <i>(éžå…¬é–‹)</i>"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "é‡è¤‡ã—ãŸè³ªå•"
@@ -1999,195 +2080,200 @@ msgstr "質å•ã«å›žç­”ã—ãŸã¨ã"
msgid "Question has no accepted answers"
msgstr "個ã®è³ªå•ãŒå›žç­”募集中"
-#: const/__init__.py:121
+#: const/__init__.py:122
#, fuzzy
msgid "asked a question"
msgstr "質å•ã™ã‚‹"
-#: const/__init__.py:122
+#: const/__init__.py:123
#, fuzzy
msgid "answered a question"
msgstr "未回答"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "コメント付ã質å•"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "コメント付ã回答"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "編集ã•ã‚ŒãŸè³ªå•"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "編集ã•ã‚ŒãŸå›žç­”"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "得られãŸãƒãƒƒã‚¸"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "ベストアンサーå°"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "上ã’"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "下ã’"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "削除ã•ã‚ŒãŸè³ªå•"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "削除ã•ã‚ŒãŸå›žç­”"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "ä¸å¿«å°"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "æ›´æ–°ã•ã‚ŒãŸã‚¿ã‚°"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "é¸æŠžã•ã‚ŒãŸãŠæ°—ã«å…¥ã‚Š"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "完全ãªãƒ¦ãƒ¼ã‚¶ãƒ—ロファイル"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒƒãƒ—デートをユーザã«é€ä¿¡"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "未回答"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "ベストアンサーå°"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "回答"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "質å•ã‚³ãƒ¡ãƒ³ãƒˆ"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "回答コメント"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "ç´å¾—ã•ã‚ŒãŸå›žç­”"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[閉鎖ã•ã‚Œã¾ã—ãŸ]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[削除ã•ã‚Œã¾ã—ãŸ]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "最åˆã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "排除ã€ç„¡è¦–ã™ã‚‹ã‚¿ã‚°"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "個人的ã«é¸æŠžã•ã‚ŒãŸ"
-#: const/__init__.py:218
+#: const/__init__.py:223
#, fuzzy
msgid "instantly"
msgstr "ã™ãã«"
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "デイリー"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "ウイークリー"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "昨日"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "What is gravatar?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "金賞"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "銀賞"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "銅賞"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2330,7 +2416,7 @@ msgid "Incorrect username."
msgstr "sorry, there is no such user name"
#: 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:206
msgid "signin/"
msgstr ""
@@ -2464,77 +2550,77 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "パスワードã®å¾©æ—§"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
"申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€å…¥åŠ›ã—ãŸãƒ‘スワードã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸã€‚å†åº¦å…¥åŠ›ã—ã¦ãã "
"ã•ã„。"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2543,105 +2629,33 @@ msgstr ""
msgid "Site"
msgstr "タイトル"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
#, fuzzy
msgid "Base Settings"
msgstr "設定"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr ""
-#: 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
-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
-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
-#, 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 ""
-
-#: 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 "設定"
-
-#: 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 ""
-
-#: 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 ""
@@ -2669,15 +2683,15 @@ 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>"
+"<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>"
+"<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
@@ -2686,6 +2700,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "ã“ã®è³ªå•ã®æœ€åˆã®å›žç­”ã«ãªã‚Œã¾ã™ï¼"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "未回答"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2734,8 +2763,8 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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 "
@@ -2743,83 +2772,94 @@ msgstr ""
"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "自身ã®è³ªå•ã®æœ€åˆã®ç´å¾—回答"
-#: models/__init__.py:347
+#: models/__init__.py:353
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, 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"
msgstr ""
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:417
+#: 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:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
msgid "blocked users cannot post"
msgstr ""
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr ""
-#: models/__init__.py:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2829,56 +2869,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2887,162 +2927,163 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr ""
-#: models/__init__.py:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr ""
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
#, fuzzy
msgid "cannot revoke old vote"
msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "%(hr)d 時間å‰"
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "%(min)d 分å‰"
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "匿å"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
@@ -3050,44 +3091,44 @@ msgstr ""
"--\n"
"Q&A フォーラム管ç†"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
#, fuzzy
msgid "Suspended User"
msgstr "é€ä¿¡è€…ã¯"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
#, fuzzy
msgid "Registered User"
msgstr "登録ユーザー"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3095,56 +3136,45 @@ msgstr[0] ""
"銀ãƒãƒƒã‚¸ã‚’å¾—ã‚‹ã«ã¯ã€è‘—ã—ã„勤勉ã•ãŒå¿…è¦ã§ã™ã€‚得る事ãŒã§ããŸãªã‚‰ã€ãã‚Œã¯ã“ã®ã‚³"
"ミュニティーã¸ã®å‰å¤§ãªè²¢çŒ®ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚"
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
"ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã®æ´»å‹•çš„ãªå‚加者ã§ã‚ã‚‹ãªã‚‰ã€ã“ã®ãƒãƒƒã‚¸ã§èªå®šã•ã‚Œã¾ã™ã€‚"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "ã‚¿ã‚°"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3429,54 +3459,65 @@ msgstr ""
msgid "Very active in one tag"
msgstr ""
-#: models/meta.py:112
+#: models/content.py:549
+#, fuzzy
+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
+#, fuzzy
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "より詳ã—ã知るã«ã¯"
-#: models/question.py:452
-#, fuzzy
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s ãŒæ”¹å¤‰ã—ãŸè³ªå•"
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr ""
@@ -3489,8 +3530,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3545,6 +3586,80 @@ msgstr "ウイークリー"
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&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
+msgid ""
+"Sincerely,\n"
+"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"
+"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
+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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr ""
@@ -3720,132 +3835,114 @@ msgstr ""
msgid "Please sign in to vote"
msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "QAフォーラムフィードãƒãƒƒã‚¯"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "ã”æ„見ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ï¼"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:131
+#: views/readers.py:151
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "ã‚ãŸã‚‰ã—ã„質å•"
-#: views/readers.py:139
+#: views/readers.py:159
#, fuzzy, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
msgstr[0] "ã‚ãŸã‚‰ã—ã„質å•"
-#: views/readers.py:177
+#: 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:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "投票"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "回答"
-
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "閲覧"
-
-#: views/readers.py:440
+#: views/readers.py:415
#, fuzzy
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
-#: views/users.py:224
+#: views/users.py:211
#, fuzzy
msgid "moderate this user"
msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’モデレートã™ã‚‹"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’モデレートã™ã‚‹"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "ユーザプロファイル"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "ユーザプロファイル概略"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "最近ã®ãƒ¦ãƒ¼ã‚¶ã®æ´»å‹•"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "プロファイル:最近ã®æ´»å‹•"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr ""
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "プロファイル:応答"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr ""
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "プロファイル:投票"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "å¾³"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "プロファイル:徳"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "ユーザã®ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "プロファイル:ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "メール更新ãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸ"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr ""
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "プロファイル:メール登録ãªã©"
@@ -3902,6 +3999,443 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#, fuzzy
+#~ msgid "Sites"
+#~ 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] "次ã®ã‚¨ãƒ©ãƒ¼ã‚’æ­£ã—ã¦ãã ã•ã„:"
+
+#, fuzzy
+#~ msgid "Edit Site Settings"
+#~ msgstr "設定"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+
+#, 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>)"
+
+#, 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 "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.</"
+#~ "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 "Email verified"
+#~ 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 "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."
+
+#, 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 "
+#~ "%(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 "This account already exists, please use another."
+#~ msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’使ã£ã¦ãã ã•ã„。"
+
+#~ msgid "Screen name label"
+#~ msgstr "<strong>スクリーンå</strong> (<i>ä»–ã®ã²ã¨ã«è¡¨ç¤ºã•ã‚Œã¾ã™</i>)"
+
+#~ msgid "Email address label"
+#~ msgstr ""
+#~ "<strong>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹</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."
+
+#, fuzzy
+#~ msgid "please select one of the options above"
+#~ msgstr "上記ã‹ã‚‰ä¸€ã¤é¸æŠžã—ã¦ãã ã•ã„"
+
+#~ msgid "create account"
+#~ msgstr "サインアップ"
+
+#~ msgid "Logout"
+#~ msgstr "ログアウト"
+
+#~ msgid "User login"
+#~ 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>"
+
+#, 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 "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+
+#, fuzzy
+#~ msgid "Login or email"
+#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—"
+
+#~ msgid "Password"
+#~ msgstr "パスワード"
+
+#~ msgid "Login"
+#~ msgstr "ログイン"
+
+#, fuzzy
+#~ msgid "New password"
+#~ msgstr "パスワード"
+
+#, fuzzy
+#~ msgid "Please, retype"
+#~ msgstr "確èªç”¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+
+#, fuzzy
+#~ msgid "provider"
+#~ msgstr "ã‚ãŸã‚‰ã—ã„プロãƒã‚¤ãƒ€ãƒ¼ã‚’追加ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "last used"
+#~ msgstr "最終活動"
+
+#~ msgid "delete"
+#~ msgstr "削除ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
+
+#, fuzzy
+#~ msgid "recover your account via email"
+#~ msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "Recover your account via email"
+#~ msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
+
+#~ msgid "Why use OpenID?"
+#~ msgstr "ãªãœOpenIDã‚’ã¤ã‹ã†ã®ã‹ï¼Ÿ"
+
+#~ msgid "with openid it is easier"
+#~ msgstr ""
+#~ "OpenIDã‚’ã¤ã‹ã†ã¨ã€ã‚らãŸã«ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを作る必è¦ãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "ã™ã¹ã¦ã®OpenID対応ウェブサイトã§ãŠãªã˜ãƒ­ã‚°ã‚¤ãƒ³ã‚’安全ã«å†åˆ©ç”¨ã§ãã¾ã™ã€‚"
+
+#~ 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 "Signup"
+#~ msgstr "サインアップã™ã‚‹"
+
+#, fuzzy
+#~ msgid "or create a new user name and password here"
+#~ msgstr "ログインåã¨ãƒ‘スワードを作æˆã™ã‚‹"
+
+#~ msgid "Create login name and password"
+#~ 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."
+
+#~ msgid "Create Account"
+#~ msgstr "アカウントを作æˆã™ã‚‹"
+
+#~ msgid "or"
+#~ msgstr "ã‚‚ã—ãã¯"
+
+#~ msgid "return to OpenID login"
+#~ msgstr "OpenID ログインã«æˆ»ã‚‹"
+
+#, fuzzy
+#~ msgid "add avatar"
+#~ msgstr "What is gravatar?"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "タグを変更ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "Your current avatar: "
+#~ msgstr "アカウントã®è©³ç´°ï¼š"
+
+#, fuzzy
+#~ msgid "change avatar"
+#~ msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
+
+#, fuzzy
+#~ msgid "delete avatar"
+#~ msgstr "削除ã•ã‚ŒãŸå›žç­”"
+
+#, fuzzy
+#~ msgid "Delete These"
+#~ msgstr "削除ã•ã‚ŒãŸå›žç­”"
+
+#~ msgid "answer permanent link"
+#~ msgstr "回答ã®ãƒªãƒ³ã‚¯"
+
+#~ msgid "permanent link"
+#~ msgstr "リンク"
+
+#~ msgid "edit"
+#~ msgstr "編集ã™ã‚‹"
+
+#~ msgid ""
+#~ "report as offensive (i.e containing spam, advertising, malicious text, "
+#~ "etc.)"
+#~ msgstr ""
+#~ "侮辱的ã¨ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ (例:SPAMãŒå«ã¾ã‚Œã‚‹ã€åºƒå‘Šçš„ã€æ‚ªæ„ã®ã‚るテキストã€ãª"
+#~ "ã©ãªã©ï¼‰"
+
+#~ msgid "flag offensive"
+#~ msgstr "侮辱的ã¨å°ã‚’付ã‘ã‚‹"
+
+#, fuzzy
+#~ msgid "undelete"
+#~ msgstr "削除ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "Post Your Answer"
+
+#, fuzzy
+#~ msgid "mark this answer as correct (click again to undo)"
+#~ msgstr "ã“ã®è³ªå•ã‚’ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã™ã‚‹ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+
+#, fuzzy
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã«é¸ã°ã‚Œã¾ã—ãŸ"
+
+#, fuzzy
+#~ msgid "close date %(closed_at)s"
+#~ msgstr "閉鎖ã—ãŸæ—¥æ™‚"
+
+#, fuzzy
+#~ msgid "retag"
+#~ msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
+
+#~ msgid "reopen"
+#~ msgstr "å†åº¦é–‹ã"
+
+#~ msgid "close"
+#~ msgstr "閉鎖ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "one of these is required"
+#~ msgstr "ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…é ˆã§ã™"
+
+#~ msgid "(required)"
+#~ msgstr "(必須)"
+
+#~ msgid "Toggle the real time Markdown editor preview"
+#~ msgstr "リアルタイムMarkdown編集プレビューをトグルã™ã‚‹"
+
+#~ msgid "hide preview"
+#~ msgstr "プレビューを隠ã™"
+
+#~ msgid "Related tags"
+#~ msgstr "ã‚¿ã‚°"
+
+#~ msgid "Interesting tags"
+#~ msgstr "興味ã‚ã‚‹ã‚¿ã‚°"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "追加ã™ã‚‹"
+
+#~ msgid "Ignored tags"
+#~ msgstr "表示ã—ãªã„ã‚¿ã‚°"
+
+#, fuzzy
+#~ msgid "Display tag filter"
+#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¿ã‚°ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"
+
#~ msgid "Sorry, could not find the page you requested."
#~ msgstr "残念ãªãŒã‚‰ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
@@ -3965,12 +4499,6 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "編集をä¿å­˜ã™ã‚‹"
-#~ msgid "Cancel"
-#~ msgstr "キャンセル"
-
-#~ msgid "hide preview"
-#~ msgstr "プレビューを隠ã™"
-
#~ msgid "show preview"
#~ msgstr "プレビューを表示ã™ã‚‹"
@@ -3980,6 +4508,10 @@ msgstr ""
#~ msgid "Badge"
#~ msgstr "ãƒãƒƒã‚¸"
+#, fuzzy
+#~ msgid "%(description)s"
+#~ msgstr "メール登録設定"
+
#~ msgid "Badges summary"
#~ msgstr "ãƒãƒƒã‚¸ã‚µãƒžãƒªãƒ¼"
@@ -3994,8 +4526,8 @@ 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"
+#~ "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 "
@@ -4049,6 +4581,10 @@ msgstr ""
#~ 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 "
@@ -4079,6 +4615,10 @@ 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 "upvote"
+#~ msgstr "上ã’"
+
#~ msgid "use tags"
#~ msgstr "タグを利用ã™ã‚‹"
@@ -4086,10 +4626,18 @@ msgstr ""
#~ msgstr "コメントを加ãˆã‚‹"
#, fuzzy
+#~ msgid "downvote"
+#~ msgstr "下ã’"
+
+#, fuzzy
#~ msgid " accept own answer to own questions"
#~ msgstr "自身ã®è³ªå•ã®æœ€åˆã®ç´å¾—回答"
#, fuzzy
+#~ msgid "open and close own questions"
+#~ msgstr "ã‚らゆる閉鎖ã—ãŸè³ªå•ã‚’é–‹ã"
+
+#, fuzzy
#~ msgid "retag other's questions"
#~ msgstr "質å•ã«ã‚¿ã‚°ã‚’å†ã³ã¤ã‘ã‚‹"
@@ -4127,6 +4675,10 @@ msgstr ""
#~ msgid "Goal of this site is..."
#~ msgstr "ã“ã®ã‚µã‚¤ãƒˆã®ã‚´ãƒ¼ãƒ«ã¯..."
+#, fuzzy
+#~ msgid "Still have questions?"
+#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
+
#~ msgid ""
#~ "Please ask your question at %(ask_question_url)s, help make our community "
#~ "better!"
@@ -4140,10 +4692,6 @@ msgstr ""
#~ msgid "Give us your feedback!"
#~ msgstr "ã‚ãªãŸã®ãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ã‚’ãã ã•ã„ï¼"
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "有効ãªé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„"
-
#~ msgid "(this field is required)"
#~ msgstr "(ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…須)"
@@ -4161,29 +4709,32 @@ msgstr ""
#~ msgid "Share this question on %(site)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. "
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "ãƒãƒƒã‚¸"
-
-#~ msgid "previous"
-#~ msgstr "以å‰ã®"
-
-#~ msgid "current page"
-#~ msgstr "ç¾åœ¨ã®ãƒšãƒ¼ã‚¸"
+#~ msgid "i like this question (click again to cancel)"
+#~ 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. "
#, fuzzy
-#~ msgid "page number %(num)s"
-#~ msgstr "ページ数"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "ã“ã®æŠ•ç¨¿ã¯è‰¯ã„ã¨æ€ã†ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
-#~ msgid "next page"
-#~ msgstr "次ã®ãƒšãƒ¼ã‚¸"
+#~ msgid "current number of votes"
+#~ msgstr "ç¾åœ¨ã®æŠ•ç¥¨æ•°"
-#~ msgid "posts per page"
-#~ msgstr "ページã‚ãŸã‚Šã®æŠ•ç¨¿æ•°"
+#, fuzzy
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "ユーザプロファイル"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
#, fuzzy
#~ msgid "anonymous user"
@@ -4208,9 +4759,6 @@ msgstr ""
#~ msgid "delete this comment"
#~ msgstr "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã™ã‚‹"
-#~ msgid "edit"
-#~ msgstr "編集ã™ã‚‹"
-
#~ msgid "add comment"
#~ msgstr "post a comment"
@@ -4227,24 +4775,43 @@ msgstr ""
#~ msgstr[0] "ã‚‚ã£ã¨ã‚‚<strong>投票ã•ã‚ŒãŸ</strong>質å•"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…é ˆã§ã™"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "ユーザプロファイル"
-#~ msgid "(required)"
-#~ msgstr "(必須)"
+#~ msgid "previous"
+#~ msgstr "以å‰ã®"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "リアルタイムMarkdown編集プレビューをトグルã™ã‚‹"
+#~ msgid "current page"
+#~ msgstr "ç¾åœ¨ã®ãƒšãƒ¼ã‚¸"
+
+#, fuzzy
+#~ msgid "page number %(num)s"
+#~ msgstr "ページ数"
+
+#~ msgid "next page"
+#~ msgstr "次ã®ãƒšãƒ¼ã‚¸"
+
+#~ 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] "åå¿œ"
+
+#, 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 "フラグを最åˆã«ãƒã‚¹ãƒˆã—ãŸ"
@@ -4258,50 +4825,165 @@ msgstr ""
#~ msgid "Privacy policy"
#~ 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 "ã“ã®æŠ•ç¨¿ã¯è‰¯ã„ã¨æ€ã†ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#~ msgid "Edit question"
+#~ msgstr "質å•ã‚’編集ã™ã‚‹"
-#~ msgid "current number of votes"
-#~ msgstr "ç¾åœ¨ã®æŠ•ç¥¨æ•°"
+#~ msgid "Change tags"
+#~ msgstr "タグを変更ã™ã‚‹"
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#, fuzzy
+#~ msgid "Retag"
+#~ msgstr "ã‚¿ã‚°"
+
+#~ msgid "Why use and modify tags?"
+#~ msgstr "ãªãœã‚¿ã‚°ã‚’ã¤ã‹ã£ãŸã‚Šã€ä¿®æ­£ã™ã‚‹ã®ã§ã™ã‹ï¼Ÿ"
+
+#~ msgid "up to 5 tags, less than 20 characters each"
+#~ msgstr "5タグã¾ã§ã€ï¼’ï¼æ–‡å­—未満"
+
+#~ msgid "Reopen question"
+#~ msgstr "å†é–‹ã•ã‚ŒãŸè³ªå•"
#, fuzzy
-#~ msgid "retag"
-#~ msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
+#~ msgid "Title"
+#~ msgstr "タイトル"
-#~ msgid "reopen"
-#~ msgstr "å†åº¦é–‹ã"
+#, fuzzy
+#~ msgid "Close reason:"
+#~ msgstr "質å•ã‚’閉鎖ã™ã‚‹"
-#~ msgid "close"
-#~ msgstr "閉鎖ã™ã‚‹"
+#, fuzzy
+#~ msgid "Reopen this question?"
+#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
+#~ msgid "Reopen this question"
+#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
+
+#~ msgid "Revision history"
+#~ msgstr "更新履歴"
+
+#, fuzzy
+#~ msgid "click to hide/show revision"
+#~ msgstr "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+
+#, fuzzy
+#~ msgid "Subscribe for tags"
+#~ msgstr "タグを利用ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "Subscribe"
+#~ msgstr "タグを利用ã™ã‚‹"
+
+#~ msgid "Tag list"
+#~ 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 "何も見付ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#, fuzzy
+#~ msgid "Search tips:"
+#~ msgstr "検索çµæžœ"
+
+#, fuzzy
+#~ msgid "reset author"
+#~ msgstr "作者ã«ãŸãšã­ã‚‹"
+
+#, fuzzy
+#~ msgid " or "
+#~ msgstr "ã‚‚ã—ãã¯"
+
+#, fuzzy
+#~ msgid "reset tags"
+#~ msgstr "ã‚¿ã‚°ã‚’ã¿ã‚‹"
+
+#, fuzzy
+#~ msgid "Search tip:"
+#~ msgstr "検索çµæžœ"
+
+#, fuzzy
+#~ msgid "There are no unanswered questions here"
#~ msgstr ""
-#~ "侮辱的ã¨ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ (例:SPAMãŒå«ã¾ã‚Œã‚‹ã€åºƒå‘Šçš„ã€æ‚ªæ„ã®ã‚るテキストã€ãª"
-#~ "ã©ãªã©ï¼‰"
+#~ "<div class=\"questions-count\">%(num_q)s</div>questions <strong>without "
+#~ "accepted answers</strong>"
-#~ msgid "flag offensive"
-#~ msgstr "侮辱的ã¨å°ã‚’付ã‘ã‚‹"
+#, fuzzy
+#~ msgid "No questions here. "
+#~ msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-#~ msgid "delete"
-#~ 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 "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "探ã—ã¦ã„ãŸç‰©ã¯è¦‹ä»˜ã‹ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ"
+
+#~ msgid "Please, post your question!"
+#~ msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "RSS"
+#~ msgstr "RSSã§ï¼š"
+
+#, 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文字以内ã®é•·ã•ã§ã™"
+
+#, fuzzy
+#~ msgid "please use %(tag_count)s tag"
+#~ msgid_plural "please use %(tag_count)s tags or less"
+#~ msgstr[0] "%(tag_count)sã¤ä»¥å†…ã®ã‚¿ã‚°ã‚’使ã„ã¾ã—ょã†"
+
+#, fuzzy
+#~ msgid ""
+#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
+#~ "each"
+#~ msgstr "%(tag_count)sã‚¿ã‚°ã¾ã§ã€%(max_chars)s文字未満"
#, fuzzy
#~ msgid ""
#~ "\n"
-#~ " %(counter)s Answer:\n"
+#~ " %(counter)s Answer\n"
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " %(counter)s Answers:\n"
+#~ " %(counter)s Answers\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -4326,60 +5008,17 @@ msgstr ""
#~ msgid "popular answers"
#~ msgstr "支æŒã•ã‚Œã¦ã„ã‚‹é †"
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã«é¸ã°ã‚Œã¾ã—ãŸ"
-
-#~ msgid "answer permanent link"
-#~ msgstr "回答ã®ãƒªãƒ³ã‚¯"
-
-#~ msgid "permanent link"
-#~ msgstr "リンク"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "ã‚‚ã—ãã¯"
-
-#~ msgid "email"
-#~ 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 ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
-
-#, 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)"
-
-#~ 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 "Answer Your Own Question"
+#~ msgstr "ã‚ãªãŸè‡ªèº«ã®è³ªå•ã«å›žç­”ã™ã‚‹"
#, fuzzy
#~ msgid "Login/Signup to Answer"
#~ msgstr "投稿ã™ã‚‹ãŸã‚ã«ãƒ­ã‚°ã‚¤ãƒ³ï¼ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹"
+#, fuzzy
+#~ msgid "Your answer"
+#~ msgstr "支æŒã•ã‚Œã¦ã„ã‚‹é †"
+
#~ msgid "Be the first one to answer this question!"
#~ msgstr "ã“ã®è³ªå•ã®æœ€åˆã®å›žç­”ã«ãªã‚Œã¾ã™ï¼"
@@ -4410,13 +5049,21 @@ msgstr ""
#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
#~ "really helps to select the best questions and answers!"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "ã‚ãªãŸè‡ªèº«ã®è³ªå•ã«å›žç­”ã™ã‚‹"
+#, fuzzy
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "投稿ã™ã‚‹ãŸã‚ã«ãƒ­ã‚°ã‚¤ãƒ³ï¼ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹"
#~ msgid "Answer the question"
#~ msgstr "Post Your Answer"
#, fuzzy
+#~ msgid " or"
+#~ msgstr "ã‚‚ã—ãã¯"
+
+#~ msgid "email"
+#~ msgstr "メールアドレス"
+
+#, fuzzy
#~ msgid "Question tools"
#~ msgstr "ã‚¿ã‚°"
@@ -4440,9 +5087,6 @@ msgstr ""
#~ msgid "subsribe to rss feed"
#~ msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
-#~ msgid "Question tags"
-#~ msgstr "ã‚¿ã‚°"
-
#~ msgid "question asked"
#~ msgstr "質å•æ—¥"
@@ -4458,408 +5102,291 @@ msgstr ""
#~ msgid "Related questions"
#~ msgstr "関係ã—ãŸè³ªå•"
-#~ msgid "Edit question"
-#~ msgstr "質å•ã‚’編集ã™ã‚‹"
-
-#~ msgid "Change tags"
-#~ msgstr "タグを変更ã™ã‚‹"
-
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "ã‚¿ã‚°"
-
-#~ msgid "Why use and modify tags?"
-#~ msgstr "ãªãœã‚¿ã‚°ã‚’ã¤ã‹ã£ãŸã‚Šã€ä¿®æ­£ã™ã‚‹ã®ã§ã™ã‹ï¼Ÿ"
-
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "5タグã¾ã§ã€ï¼’ï¼æ–‡å­—未満"
-
-#~ msgid "Reopen question"
-#~ msgstr "å†é–‹ã•ã‚ŒãŸè³ªå•"
-
-#, fuzzy
-#~ msgid "Title"
-#~ 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"
-#, fuzzy
-#~ msgid "Close reason:"
-#~ 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"
#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
-
-#~ msgid "Reopen this question"
-#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
-
-#~ msgid "Revision history"
-#~ msgstr "更新履歴"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr ""
+#~ "<strong>Notify me</strong> weekly when there are any new answers or "
+#~ "updates"
#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "タグを利用ã™ã‚‹"
-
-#~ msgid "Tag list"
-#~ 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 "Change email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã™ã‚‹"
-
-#~ msgid "Save your email address"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
-
-#~ msgid "change %(email)s info"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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>"
+#~ "\n"
+#~ "(note: you can always <a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>adjust frequency</a> of email updates)"
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
#~ 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."
+#~ "<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 "Your new Email"
-#~ msgstr ""
-#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
-#~ "anyone, must be valid)"
+#, fuzzy
+#~ msgid "%(username)s's profile"
+#~ msgstr "ユーザプロファイル"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+#~ msgid "Edit user profile"
+#~ msgstr "ユーザープロファイルを編集ã™ã‚‹"
-#~ msgid "Validate email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’有効ã«ã™ã‚‹"
+#~ msgid "edit profile"
+#~ 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 "change picture"
+#~ msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
-#~ msgid "Email not changed"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
+#~ msgid "Registered user"
+#~ 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 "Screen Name"
+#~ msgstr "スクリーンå"
-#~ msgid "Email changed"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
+#~ msgid "Update"
+#~ 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."
+#, fuzzy
+#~ msgid "subscriptions"
+#~ msgstr "メール登録設定"
-#~ msgid "Email verified"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯ç¢ºè¨¼ã•ã‚Œã¾ã—ãŸ"
+#~ msgid "Email subscription settings"
+#~ msgstr "メール登録設定"
-#~ msgid "thanks for verifying email"
+#~ msgid "email subscription settings info"
#~ 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."
+#~ "<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 key not sent"
-#~ msgstr "Validation email not sent"
+#~ msgid "Stop sending email"
+#~ 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."
+#, fuzzy
+#~ msgid "followed questions"
+#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "登録"
+#~ msgid "Sections:"
+#~ 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>"
+#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr "%(tag_count)sã¤ä»¥å†…ã®ã‚¿ã‚°ã‚’使ã„ã¾ã—ょã†"
-#~ 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>"
+#, fuzzy
+#~ msgid "select:"
+#~ 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>"
+#, fuzzy
+#~ msgid "seen"
+#~ 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>"
+#, fuzzy
+#~ msgid "new"
+#~ msgstr "最新"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’使ã£ã¦ãã ã•ã„。"
+#, fuzzy
+#~ msgid "none"
+#~ msgstr "銅賞"
-#~ msgid "Screen name label"
-#~ msgstr "<strong>スクリーンå</strong> (<i>ä»–ã®ã²ã¨ã«è¡¨ç¤ºã•ã‚Œã¾ã™</i>)"
+#, fuzzy
+#~ msgid "mark as seen"
+#~ msgstr "最終活動"
-#~ msgid "Email address label"
-#~ msgstr ""
-#~ "<strong>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹</strong> (<i>will <strong>not</strong> be "
-#~ "shared with anyone, must be valid</i>)"
+#, fuzzy
+#~ msgid "mark as new"
+#~ 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 "update profile"
+#~ msgstr "プロファイルを更新ã™ã‚‹"
-#~ msgid "create account"
-#~ msgstr "サインアップ"
+#~ msgid "real name"
+#~ msgstr "実å"
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "Q&amp;Aフォーラムã«ç™»éŒ²ã„ãŸã ãã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ï¼"
+#~ msgid "member for"
+#~ msgstr "登録日"
-#~ msgid "Your account details are:"
-#~ msgstr "アカウントã®è©³ç´°ï¼š"
+#~ msgid "last seen"
+#~ msgstr "最終活動"
-#~ msgid "Username:"
-#~ msgstr "ユーザå:"
+#~ msgid "user website"
+#~ msgstr "ユーザーã®ã‚¦ã‚§ãƒ–サイト"
-#~ msgid "Password:"
-#~ msgstr "パスワード:"
+#~ msgid "location"
+#~ msgstr "場所"
-#~ msgid "Please sign in here:"
-#~ msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
+#~ msgid "age"
+#~ msgstr "å¹´é½¢"
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr ""
-#~ "よã‚ã—ããŠã­ãŒã„ã—ã¾ã™ã€‚\n"
-#~ "--\n"
-#~ "Q&A フォーラム管ç†"
+#~ msgid "age unit"
+#~ msgstr "æ­³"
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Q&amp;Aフォーマルã‹ã‚‰ã®ãŠã—らã›ã§ã™"
+#~ msgid "todays unused votes"
+#~ msgstr "今日ã®ä½¿ã‚ã‚Œã¦ãªã„投票"
-#~ msgid "Logout"
-#~ msgstr "ログアウト"
+#~ msgid "votes left"
+#~ msgstr "消ãˆåŽ»ã£ãŸæŠ•ç¥¨"
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "サインアップã™ã‚‹"
-
-#~ msgid "User login"
-#~ msgstr "ユーザーログイン"
+#~ msgid "moderation"
+#~ 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>"
+#~ msgid "%(username)s's current status is \"%(status)s\""
+#~ 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>"
+#~ msgid "User status changed"
+#~ msgstr "å¾³"
#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+#~ msgid "Save"
+#~ msgstr "編集をä¿å­˜ã™ã‚‹"
#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—"
-
-#~ msgid "Password"
-#~ msgstr "パスワード"
+#~ msgid "User reputation changed"
+#~ msgstr "å¾³"
-#~ msgid "Login"
-#~ msgstr "ログイン"
+#~ msgid "Add"
+#~ msgstr "追加ã™ã‚‹"
#, fuzzy
-#~ msgid "New password"
-#~ msgstr "パスワード"
+#~ msgid "Send message to %(username)s"
+#~ msgstr "スクリーンåã‚’é¸æŠžã—ã¾ã—ょã†"
#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "確èªç”¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+#~ msgid "Message sent"
+#~ msgstr "メッセージ本文:"
#, fuzzy
-#~ msgid "provider"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„プロãƒã‚¤ãƒ€ãƒ¼ã‚’追加ã™ã‚‹"
+#~ msgid "Send message"
+#~ msgstr "メッセージ:"
#, fuzzy
-#~ msgid "last used"
-#~ msgstr "最終活動"
+#~ msgid "Followed by %(count)s person"
+#~ msgid_plural "Followed by %(count)s people"
+#~ msgstr[0] "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
+#~ msgid "Following %(count)s person"
+#~ msgid_plural "Following %(count)s people"
+#~ msgstr[0] "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
+#~ msgid "%(username)s's network is empty"
+#~ msgstr "ユーザプロファイル"
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "ãªãœOpenIDã‚’ã¤ã‹ã†ã®ã‹ï¼Ÿ"
-
-#~ msgid "with openid it is easier"
-#~ msgstr ""
-#~ "OpenIDã‚’ã¤ã‹ã†ã¨ã€ã‚らãŸã«ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを作る必è¦ãŒã‚ã‚Šã¾ã›ã‚“。"
-
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "ã™ã¹ã¦ã®OpenID対応ウェブサイトã§ãŠãªã˜ãƒ­ã‚°ã‚¤ãƒ³ã‚’安全ã«å†åˆ©ç”¨ã§ãã¾ã™ã€‚"
-
-#~ msgid "openid is widely adopted"
-#~ msgstr "ã™ã§ã«å¤šæ•°ã®ã‚¦ã‚§ãƒ–サイトã§OpenIDアカウントãŒåˆ©ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+#~ msgid "activity"
+#~ msgstr "最近ã®æ´»å‹•"
-#~ msgid "openid is supported open standard"
-#~ msgstr ""
-#~ "OpenIDã¯ã€å¤šãã®çµ„ç¹”ãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„るオープンスタンダードã«åŸºã¥ã„ã¦ã„ã¾"
-#~ "ã™ã€‚"
+#, fuzzy
+#~ msgid "%(user_name)s's karma change log"
+#~ msgstr "ユーザプロファイル"
-#~ msgid "Find out more"
-#~ msgstr "より詳ã—ã知るã«ã¯"
+#~ msgid "overview"
+#~ msgstr "概略"
-#~ msgid "Get OpenID"
-#~ msgstr "OpenIDã‚’å–å¾—ã™ã‚‹"
+#, 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 "Signup"
-#~ 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"
+#~ " "
#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "ログインåã¨ãƒ‘スワードを作æˆã™ã‚‹"
+#~ msgid "the answer has been voted for %(answer_score)s times"
+#~ msgstr "回答㯠%(vote_count)s 回投票ã•ã‚Œã¾ã—ãŸ"
-#~ msgid "Create login name and password"
-#~ msgstr "ログインåã¨ãƒ‘スワードを作æˆã™ã‚‹"
+#~ msgid "this answer has been selected as correct"
+#~ 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."
+#, 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 "Create Account"
-#~ msgstr "アカウントを作æˆã™ã‚‹"
+# 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 "イイãƒ"
-#~ msgid "or"
-#~ msgstr "ã‚‚ã—ãã¯"
+#, fuzzy
+#~ msgid "user has voted up this many times"
+#~ msgstr "Post Your Answer"
-#~ msgid "return to OpenID login"
-#~ msgstr "OpenID ログインã«æˆ»ã‚‹"
+#~ msgid "thumb down"
+#~ msgstr "( ´ _ã‚`)"
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "What is gravatar?"
+#~ msgid "user voted down this many times"
+#~ msgstr "Post Your Answer"
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "タグを変更ã™ã‚‹"
+#~ 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"
+#~ " "
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "アカウントã®è©³ç´°ï¼š"
+#~ 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"
+#~ " "
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
+#~ msgid "Answer to:"
+#~ msgstr "回答"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "削除ã•ã‚ŒãŸå›žç­”"
+#~ msgid "User profile"
+#~ msgstr "ユーザープロファイル"
+
+#~ msgid "graph of user reputation"
+#~ msgstr "Graph of user karma"
+
+#~ msgid "reputation history"
+#~ msgstr "信用度履歴"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "削除ã•ã‚ŒãŸå›žç­”"
+#~ msgid "questions that user is following"
+#~ msgstr "マッãƒã—ãŸè³ªå•ï¼š"
+
+#~ msgid "recent activity"
+#~ msgstr "最近ã®æ´»å‹•"
+
+#~ msgid "casted votes"
+#~ msgstr "votes"
+
+#~ msgid "votes"
+#~ msgstr "投票"
#~ msgid "answer tips"
#~ msgstr "コツ"
@@ -4907,6 +5434,9 @@ msgstr ""
#~ msgid "learn more about Markdown"
#~ msgstr "Markdown記法ã«ã¤ã„ã¦ã•ã‚‰ã«å­¦ã¶"
+#~ msgid "ask a question"
+#~ msgstr "質å•ã™ã‚‹"
+
#~ msgid "login to post question info"
#~ msgstr ""
#~ "<span class=\"strong big\">You are welcome to start submitting your "
@@ -4934,22 +5464,6 @@ msgstr ""
#~ msgid "Ask your question"
#~ 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文字以内ã®é•·ã•ã§ã™"
-
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "%(tag_count)sã¤ä»¥å†…ã®ã‚¿ã‚°ã‚’使ã„ã¾ã—ょã†"
-
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "%(tag_count)sã‚¿ã‚°ã¾ã§ã€%(max_chars)s文字未満"
-
#~ msgid "about"
#~ msgstr "概è¦"
@@ -4962,31 +5476,12 @@ msgstr ""
#~ msgid "back to home page"
#~ msgstr "ホームã«æˆ»ã‚‹"
-#~ msgid "questions"
-#~ msgstr "質å•"
-
#~ msgid "users"
#~ msgstr "ユーザー"
#~ msgid "badges"
#~ msgstr "ãƒãƒƒã‚¸"
-#~ msgid "ask a question"
-#~ msgstr "質å•ã™ã‚‹"
-
-#~ msgid "logout"
-#~ msgstr "ログアウト"
-
-#~ msgid "login"
-#~ msgstr "ログイン"
-
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "設定"
-
-#~ msgid "search"
-#~ msgstr "検索ã™ã‚‹"
-
#~ msgid "question tips"
#~ msgstr "コツ"
@@ -4996,72 +5491,20 @@ msgstr ""
#~ msgid "please try provide enough details"
#~ msgstr "å¿…è¦å分ã«è©³ã—ã質å•ã—ã¾ã—ょã†ã€‚"
-#~ msgid "Interesting tags"
-#~ msgstr "興味ã‚ã‚‹ã‚¿ã‚°"
-
-#~ msgid "Add"
-#~ msgstr "追加ã™ã‚‹"
-
-#~ msgid "Ignored tags"
-#~ msgstr "表示ã—ãªã„ã‚¿ã‚°"
-
#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¿ã‚°ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "探ã—ã¦ã„ãŸç‰©ã¯è¦‹ä»˜ã‹ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ"
-
-#~ msgid "Please, post your question!"
-#~ msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
-
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
-
-#, fuzzy
-#~ msgid "Search tips:"
-#~ msgstr "検索çµæžœ"
+#~ msgid "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "閲覧"
#, fuzzy
-#~ msgid "reset author"
-#~ msgstr "作者ã«ãŸãšã­ã‚‹"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "ã‚‚ã—ãã¯"
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "回答"
#, fuzzy
-#~ msgid "reset tags"
-#~ msgstr "ã‚¿ã‚°ã‚’ã¿ã‚‹"
-
-#, fuzzy
-#~ 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>"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-
-#, fuzzy
-#~ msgid "resetting author"
-#~ msgstr "作者ã«ãŸãšã­ã‚‹"
-
-#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "興味ã‚ã‚‹ã‚¿ã‚°"
-
-#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
-
-#~ msgid "Related tags"
-#~ msgstr "ã‚¿ã‚°"
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "投票"
#, fuzzy
#~ msgid "see unanswered questions"
@@ -5072,197 +5515,80 @@ msgstr ""
#~ msgstr "ユーザã®ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
#, fuzzy
-#~ msgid "%(username)s's profile"
-#~ msgstr "ユーザプロファイル"
-
-#~ msgid "Edit user profile"
-#~ msgstr "ユーザープロファイルを編集ã™ã‚‹"
-
-#~ msgid "edit profile"
-#~ msgstr "プロファイルを編集ã™ã‚‹"
-
-#~ msgid "Registered user"
-#~ msgstr "登録ユーザー"
-
-#~ msgid "Screen Name"
-#~ msgstr "スクリーンå"
-
-#~ msgid "Update"
-#~ msgstr "æ›´æ–°ã™ã‚‹"
-
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "メール登録設定"
-
-#~ msgid "Email 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 "badges:"
+#~ msgstr "ãƒãƒƒã‚¸"
-#~ msgid "Stop sending email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’åœæ­¢ã™ã‚‹"
+#~ msgid "logout"
+#~ msgstr "ログアウト"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
+#~ msgid "login"
+#~ msgstr "ログイン"
#, fuzzy
-#~ msgid "Sections:"
+#~ msgid "settings"
#~ msgstr "設定"
#, 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 "プロファイルを更新ã™ã‚‹"
-
-#~ 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 "Save"
-#~ msgstr "編集をä¿å­˜ã™ã‚‹"
-
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "å¾³"
-
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "メッセージ本文:"
-
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "メッセージ:"
+#~ msgid "(please enter a valid email)"
+#~ msgstr "有効ãªé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„"
-#, fuzzy
-#~ msgid "Following %(count)s person"
-#~ msgid_plural "Following %(count)s people"
-#~ msgstr[0] "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+# "ã“れらã®ãƒãƒªã‚·ãƒ¼ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å€‹äººæƒ…å ±ä¿è­·ã®æ”¹å–„ã®ç‚ºã«ä¿®æ­£ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ãã®ã‚ˆã†ãªå¤‰æ›´ãŒã‚ã‚‹ãŸã³ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å†…部通知システムを経由ã—ã¦é€šçŸ¥ã‚’å—ã‘ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚"
+# "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 "ã“ã®æŠ•ç¨¿ã¯è‰¯ã„ã¨æ€ã†ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "ユーザプロファイル"
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
#, fuzzy
-#~ msgid "activity"
-#~ msgstr "最近ã®æ´»å‹•"
-
-#~ msgid "overview"
-#~ msgstr "概略"
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr "ã“ã‚Œã¯ã‚‚ã—ã‹ã—ãŸã‚‰ã¤ãŽã®ã‚ˆã†ãªç†ç”±ã§ãŠã“ã£ãŸã‹ã‚‚ã—ã‚Œãªã„:"
#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] ""
+#~ msgid ""
#~ "\n"
-#~ "<span class=\"count\">%(counter)s</span>個ã®è³ªå•\n"
-#~ " "
-
-#, 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 "<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 "イイãƒ"
-
-#~ msgid "thumb down"
-#~ msgstr "( ´ _ã‚`)"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+#~ " %(counter)s Answer:\n"
+#~ " "
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers:\n"
+#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ " <span class=\"count\">%(counter)s</span>ãƒãƒƒã‚¸\n"
-#~ " "
+#~ " %(counter)個ã®å›žç­”:\n"
+#~ " "
#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "回答"
+#~ msgid "mark this answer as favorite (click again to undo)"
+#~ msgstr "ã“ã®è³ªå•ã‚’ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã™ã‚‹ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
-#~ msgid "User profile"
-#~ msgstr "ユーザープロファイル"
+#~ msgid "Question tags"
+#~ msgstr "ã‚¿ã‚°"
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
+#~ msgid "questions"
+#~ msgstr "質å•"
-#~ msgid "reputation history"
-#~ msgstr "信用度履歴"
+#~ msgid "search"
+#~ msgstr "検索ã™ã‚‹"
#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "マッãƒã—ãŸè³ªå•ï¼š"
+#~ msgid "followed"
+#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
-#~ msgid "recent activity"
-#~ msgstr "最近ã®æ´»å‹•"
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "メールアドレス(ã»ã‹ã®ã²ã¨ã«ã¯éžå…¬é–‹ï¼‰ï¼š"
-#~ msgid "casted votes"
-#~ msgstr "votes"
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "サイトã®çŠ¶æ…‹"
-#~ msgid "votes"
-#~ msgstr "投票"
+#, fuzzy
+#~ msgid "Setting groups"
+#~ msgstr "設定"
#~ msgid "community wiki"
#~ msgstr "コミュニティー wiki"
@@ -5407,10 +5733,6 @@ msgstr ""
#~ msgstr "良ã„回答"
#, fuzzy
-#~ msgid "Answer voted up 25 times"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
#~ msgid "good-question"
#~ msgstr "良ã„質å•"
@@ -5515,9 +5837,6 @@ msgstr ""
#~ msgid "Logout now"
#~ 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 "ã“ã®è³ªå•ã‚’ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰ã¨ã‚Šã®ãžã(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§å†ç™»éŒ²ï¼‰"
@@ -5734,9 +6053,6 @@ msgstr ""
#~ "<span class='strong'>To change your password</span> please fill out and "
#~ "submit this form"
-#~ msgid "open any closed question"
-#~ msgstr "ã‚らゆる閉鎖ã—ãŸè³ªå•ã‚’é–‹ã"
-
#~ msgid "privacy"
#~ msgstr "プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"
@@ -5804,14 +6120,6 @@ msgstr ""
#~ msgid "details on personal information policies"
#~ 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."
-#~ msgid "Other Services"
-#~ msgstr " "
-
# "ä»–ã®ã‚µãƒ¼ãƒ“ス"
#~ msgid "details on sharing data with third parties"
#~ msgstr " "
@@ -5852,9 +6160,6 @@ msgstr ""
#~ msgid "Unanswered Questions"
#~ msgstr "未回答質å•"
-#~ msgid "All questions"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
-
#~ msgid "All Questions"
#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
@@ -5888,13 +6193,13 @@ msgstr ""
#~ msgid ""
#~ "\n"
-#~ " have total %(q_num)s questions containing %"
-#~ "(searchtitle)s in full text\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"
+#~ " have total %(q_num)s questions containing "
+#~ "%(searchtitle)s in full text\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -5903,13 +6208,13 @@ msgstr ""
#~ msgid ""
#~ "\n"
-#~ " have total %(q_num)s questions containing %"
-#~ "(searchtitle)s\n"
+#~ " have total %(q_num)s questions containing "
+#~ "%(searchtitle)s\n"
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " have total %(q_num)s questions containing %"
-#~ "(searchtitle)s\n"
+#~ " have total %(q_num)s questions containing "
+#~ "%(searchtitle)s\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -5948,9 +6253,6 @@ msgstr ""
#~ msgid "Most voted questions are shown first."
#~ msgstr "ã‚‚ã£ã¨ã‚‚投票ã•ã‚ŒãŸè³ªå•ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚"
-#~ msgid "date closed"
-#~ msgstr "閉鎖ã—ãŸæ—¥æ™‚"
-
#~ msgid "All tags matching query"
#~ msgstr "クエリ:"
@@ -6172,9 +6474,6 @@ msgstr ""
#~ msgid "Administration menu"
#~ msgstr "管ç†ãƒ¡ãƒ‹ãƒ¥ãƒ¼"
-#~ msgid "By Email:"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã§ï¼š"
-
#~ msgid "You were automatically subscribed to this question."
#~ msgstr "ã‚ãªãŸã¯è‡ªå‹•çš„ã«ã“ã®è³ªå•ã‚’登録ã—ã¦ã„ã¾ã™ã€‚"
@@ -6185,9 +6484,6 @@ msgstr ""
#~ "(<a href=\"%s\">プロフィール</a>設定ã§é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã®è¨­å®šå¤‰æ›´ãŒå¯èƒ½ã§"
#~ "ã™))"
-#~ msgid "By RSS:"
-#~ msgstr "RSSã§ï¼š"
-
#~ msgid "Answers and Comments"
#~ msgstr "回答ã¨ã‚³ãƒ¡ãƒ³ãƒˆ"
diff --git a/askbot/locale/ja/LC_MESSAGES/djangojs.mo b/askbot/locale/ja/LC_MESSAGES/djangojs.mo
index a0e8222d..4f02b12f 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 9dc61083..232929f9 100644
--- a/askbot/locale/ja/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ja/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-10-08 02:28-0500\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"
@@ -17,49 +17,324 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+
+#: 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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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/ko/LC_MESSAGES/django.mo b/askbot/locale/ko/LC_MESSAGES/django.mo
index 5f175980..5cdb0ec1 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 504b5205..69d7485d 100644
--- a/askbot/locale/ko/LC_MESSAGES/django.po
+++ b/askbot/locale/ko/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:35-0600\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: exceptions.py:13
@@ -123,19 +123,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr ""
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -143,7 +143,7 @@ msgstr ""
msgid "administrator"
msgstr ""
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr ""
@@ -187,442 +187,485 @@ msgid "Message text"
msgstr ""
#: forms.py:542
-msgid "Your name:"
+msgid "Your name (optional):"
msgstr ""
#: forms.py:543
-msgid "Email (not shared with anyone):"
+#, fuzzy
+msgid "Email:"
msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr ""
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr ""
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
msgid "this email will be linked to gravatar"
msgstr ""
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr ""
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr ""
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr ""
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr ""
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr ""
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr ""
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr ""
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr ""
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr ""
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr ""
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr ""
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr ""
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr ""
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr ""
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr ""
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr ""
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr ""
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr ""
-#: 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: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/"
msgstr ""
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr ""
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr ""
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr ""
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr ""
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr ""
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr ""
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr ""
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr ""
-#: urls.py:210
+#: urls.py:214
msgid "subscriptions/"
msgstr ""
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr ""
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr ""
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr ""
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr ""
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr ""
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "User login"
+
+#: 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:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr ""
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr ""
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr ""
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr ""
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr ""
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr "Welcome to the Q&A forum"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
msgid "Default notification frequency questions asked by the user"
msgstr ""
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -632,61 +675,61 @@ 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:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -694,11 +737,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -706,134 +749,134 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
msgstr ""
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -841,222 +884,222 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Post Your Answer"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr ""
-#: conf/license.py:12
-msgid "License settings"
+#: conf/license.py:13
+msgid "Content LicensContent License"
msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
msgid "License homepage"
msgstr ""
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1064,43 +1107,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1109,11 +1152,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1123,160 +1166,160 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr ""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr ""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Post Your Answer"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
msgid "Accept own answer"
msgstr ""
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr ""
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr ""
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr ""
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr ""
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr ""
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr ""
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr ""
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr ""
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr ""
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr ""
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1284,44 +1327,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1329,49 +1372,50 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
msgstr ""
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tags"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
msgstr ""
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
-#: conf/site_modes.py:63
-msgid "Site modes"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1379,51 +1423,51 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr ""
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1536,33 +1580,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1570,40 +1614,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1615,11 +1659,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1628,21 +1672,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1651,21 +1695,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1674,19 +1718,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1697,131 +1741,157 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
msgstr ""
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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:12
#, fuzzy
msgid "User settings"
msgstr "User login"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
msgid "Allow account recovery by email"
msgstr ""
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr ""
@@ -1923,188 +1993,192 @@ msgstr ""
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr ""
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr ""
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "received badge"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:141
+#: const/__init__.py:142
msgid "reminder about unanswered questions sent"
msgstr ""
-#: const/__init__.py:143
+#: const/__init__.py:146
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "answered question"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "commented question"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr ""
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr ""
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr ""
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr ""
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr ""
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr ""
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr ""
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr ""
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr ""
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr ""
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr ""
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2243,7 +2317,7 @@ msgid "Incorrect username."
msgstr "sorry, there is no such user name"
#: 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:206
msgid "signin/"
msgstr ""
@@ -2367,73 +2441,73 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
msgstr ""
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2441,97 +2515,32 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, 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
-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 ""
-
-#: 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
-msgid "Setting groups"
-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 ""
@@ -2559,15 +2568,15 @@ 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>"
+"<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>"
+"<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
@@ -2576,6 +2585,33 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for 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!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these 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!"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2624,98 +2660,114 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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>"
+"<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:80
+#: 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] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+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."
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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
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 ""
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "Sorry, you cannot vote for your own posts"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ">%(points)s points required to upvote "
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s points required to downvote "
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:417
+#: models/__init__.py:431
#, 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:436 models/__init__.py:503 models/__init__.py:918
+#: 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:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
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:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2725,56 +2777,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2783,260 +2835,251 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: 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:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr ""
"Sorry, since your account is blocked you cannot flag posts as offensive"
-#: models/__init__.py:749
+#: models/__init__.py:763
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."
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
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"
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
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."
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "sorry, but older votes cannot be revoked"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr ""
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] ""
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, python-format
msgid "Question: \"%(title)s\""
msgstr ""
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr ""
-
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3299,52 +3342,62 @@ msgstr ""
msgid "Very active in one tag"
msgstr ""
-#: models/meta.py:112
+#: 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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
msgid "\" and more"
msgstr ""
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr ""
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr ""
@@ -3357,8 +3410,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3412,6 +3465,88 @@ msgstr ""
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 ""
+
+#: 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 ""
+"<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/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 ""
+"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"
+"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
+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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "no"
@@ -3583,126 +3718,111 @@ msgstr ""
msgid "Please sign in to vote"
msgstr ""
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr ""
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:131
+#: views/readers.py:151
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "Asked"
-#: views/readers.py:139
+#: views/readers.py:159
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
msgstr[0] ""
-#: views/readers.py:177
+#: 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:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] ""
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] ""
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] ""
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr ""
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr ""
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr ""
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr ""
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr ""
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr ""
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr ""
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr ""
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr ""
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr ""
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "user karma"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "Profile - User's Karma"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr ""
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr ""
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr ""
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr ""
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr ""
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr ""
@@ -3767,14 +3887,306 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#~ msgid "Change email"
+#~ msgstr "Change Email"
+
+#, fuzzy
+#~ msgid "Save your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
+
+#~ 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>)"
+
+#, 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>."
+
+#~ 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."
+
+#, 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 "
+#~ "%(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 "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."
+
+#~ 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."
+
+#, fuzzy
+#~ 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"
+#~ 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"
+#~ 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"
+#~ "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 "
@@ -3796,6 +4208,14 @@ 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."
@@ -3806,6 +4226,10 @@ msgstr ""
#~ 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 "
@@ -3834,6 +4258,32 @@ msgstr ""
#~ "are gradually assigned to the users based on those points."
#, fuzzy
+#~ 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"
@@ -3861,6 +4311,14 @@ 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!"
@@ -3868,61 +4326,157 @@ msgstr ""
#~ "Please <a href='%(ask_question_url)s'>ask</a> your question, help make "
#~ "our community better!"
-#~ msgid "page number %(num)s"
-#~ msgstr "page %(num)s"
-
#, 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 "oldest answers"
-#~ msgstr "oldest"
+#~ msgid "page number %(num)s"
+#~ msgstr "page %(num)s"
-#~ msgid "newest answers"
-#~ msgstr "newest"
+#, fuzzy
+#~ msgid "responses for %(username)s"
+#~ msgstr "Choose screen name"
-#~ msgid "popular answers"
-#~ msgstr "most voted"
+#, fuzzy
+#~ msgid "Questions"
+#~ msgstr "Tags"
-#~ msgid "answer permanent link"
-#~ msgstr "permanent link"
+#, fuzzy
+#~ msgid "Edit question"
+#~ msgstr "Post Your Answer"
-#~ msgid "permanent link"
-#~ msgstr "link"
+#~ msgid "Change tags"
+#~ msgstr "Retag question"
#, fuzzy
-#~ msgid "swap with question"
+#~ msgid "Reopen question"
#~ msgstr "Post Your Answer"
-#~ 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"
+#, fuzzy
+#~ msgid "Reopen this question?"
+#~ msgstr "Post Your Answer"
-#~ msgid "Notify me weekly when there are any new answers"
+#, fuzzy
+#~ msgid "Reopen this question"
+#~ msgstr "Post Your Answer"
+
+#, fuzzy
+#~ msgid "Revision history"
+#~ msgstr "karma history"
+
+#, fuzzy
+#~ msgid "click to hide/show revision"
#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
+#~ "<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 ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ 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 ""
-#~ "(note: you can always <strong><a href='%(profile_url)s?"
-#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
-#~ "updates)"
+#~ "<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 "once you sign in you will be able to subscribe for any updates here"
+#, 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'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
+#~ "<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</"
@@ -3961,6 +4515,16 @@ msgstr ""
#~ 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 "
@@ -3974,9 +4538,6 @@ msgstr ""
#~ msgid "email the updates"
#~ msgstr "Last updated"
-#~ msgid "Question tags"
-#~ msgstr "Tags"
-
#~ msgid "question asked"
#~ msgstr "Asked"
@@ -3986,230 +4547,126 @@ msgstr ""
#~ msgid "last updated"
#~ msgstr "Last updated"
-#~ msgid "Change tags"
-#~ msgstr "Retag question"
-
-#~ msgid "Tag list"
-#~ msgstr "Tags"
-
-#~ msgid "Users"
-#~ msgstr "People"
-
-#~ msgid "reputation"
-#~ msgstr "karma"
-
-#~ msgid "Change email"
-#~ msgstr "Change Email"
-
-#~ 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 "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."
+#, fuzzy
+#~ msgid "Related questions"
+#~ msgstr "ask a question interesting to this community"
-#~ msgid "thanks for verifying email"
+#~ msgid "Notify me once a day when there are any new answers"
#~ 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"
+#~ "<strong>Notify me</strong> once a day by email when there are any new "
+#~ "answers or updates"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgid "Notify me weekly when there are any new answers"
#~ 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."
+#~ "<strong>Notify me</strong> weekly when there are any new answers or "
+#~ "updates"
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#, fuzzy
+#~ msgid "Notify me immediately when there are any new answers"
#~ 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>"
+#~ "<strong>Notify me</strong> weekly when there are any new answers or "
+#~ "updates"
#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see %"
-#~ "(gravatar_faq_url)s\n"
-#~ " "
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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>"
+#~ "(note: you can always <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
+#~ "updates)"
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
#~ 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>"
+#~ "<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 "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>"
+#, fuzzy
+#~ msgid "change picture"
+#~ msgstr "Retag question"
-#~ msgid "Screen name label"
+#, fuzzy
+#~ msgid "Screen Name"
#~ 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"
+#, fuzzy
+#~ msgid "Email subscription settings"
#~ 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"
+#~ "<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 ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
+#~ msgid "email subscription settings info"
#~ msgstr ""
-#~ "Sincerely,\n"
-#~ "Q&A Forum Administrator"
+#~ "<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 "Logout"
-#~ msgstr "Sign out"
+#~ msgid "Stop sending email"
+#~ msgstr "Stop Email"
-#~ msgid "User login"
-#~ msgstr "User login"
+#, fuzzy
+#~ msgid "followed questions"
+#~ msgstr "Ask Your Question"
-#~ 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 "member for"
+#~ msgstr "member since"
-#~ 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 "user website"
+#~ msgstr "website"
-#~ msgid "Login"
-#~ msgstr "Sign in"
+#~ msgid "age unit"
+#~ msgstr "years old"
#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "sorry, but older votes cannot be revoked"
+#~ msgid "todays unused votes"
+#~ msgstr "votes"
-#~ msgid "with openid it is easier"
-#~ msgstr "With the OpenID you don't need to create new username and password."
+#, fuzzy
+#~ msgid "moderation"
+#~ msgstr "karma"
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
+#, fuzzy
+#~ msgid "User status changed"
+#~ msgstr "User login"
-#~ msgid "openid is widely adopted"
-#~ msgstr ""
-#~ "There are > 160,000,000 OpenID account in use. Over 10,000 sites are "
-#~ "OpenID-enabled."
+#, fuzzy
+#~ msgid "User reputation changed"
+#~ msgstr "user karma"
-#~ msgid "openid is supported open standard"
-#~ msgstr ""
-#~ "OpenID is based on an open standard, supported by many organizations."
+#, fuzzy
+#~ msgid "Message sent"
+#~ msgstr "years old"
-#~ msgid "Traditional signup info"
+#, fuzzy
+#~ msgid "Suspended users can only edit or delete their own posts."
#~ 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."
+#~ "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 "add avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
+#~ msgid "Answer to:"
+#~ msgstr "Tips"
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Retag question"
+#~ 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 "change avatar"
-#~ msgstr "Retag question"
+#~ msgid "votes"
+#~ msgstr "votes"
#~ msgid "answer tips"
#~ msgstr "Tips"
@@ -4217,12 +4674,30 @@ msgstr ""
#~ 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 "
@@ -4253,12 +4728,6 @@ msgstr ""
#~ msgid "users"
#~ msgstr "people"
-#~ msgid "logout"
-#~ msgstr "sign out"
-
-#~ msgid "login"
-#~ msgstr "Hi, there! Please sign in"
-
#~ msgid "question tips"
#~ msgstr "Tips"
@@ -4269,62 +4738,37 @@ msgstr ""
#~ msgstr "provide enough details"
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "answered question"
-
-#~ msgid "Related tags"
-#~ msgstr "Tags"
+#~ msgid "see unanswered questions"
+#~ msgstr "Ask Your Question"
#, fuzzy
#~ msgid "see your followed questions"
#~ msgstr "Ask Your Question"
-#~ 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 "member for"
-#~ msgstr "member since"
-
-#~ msgid "user website"
-#~ msgstr "website"
+#~ msgid "logout"
+#~ msgstr "sign out"
-#~ msgid "age unit"
-#~ msgstr "years old"
+#~ msgid "login"
+#~ msgstr "Hi, there! Please sign in"
#, 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."
+#~ msgid "settings"
+#~ msgstr "User login"
#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Tips"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
+#~ msgid "(please enter a valid email)"
+#~ msgstr "provide enough details"
-#~ msgid "reputation history"
-#~ msgstr "karma history"
+#~ msgid "Question tags"
+#~ msgstr "Tags"
-#~ msgid "casted votes"
-#~ msgstr "votes"
+#, fuzzy
+#~ msgid "questions"
+#~ msgstr "Tips"
#~ msgid "Email verification subject line"
#~ msgstr "Verification Email from Q&A forum"
-#~ msgid "how to validate email title"
-#~ msgstr "How to validate email and why?"
-
#~ msgid ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
@@ -4352,8 +4796,5 @@ msgstr ""
#~ "completely - please make sure to log out from your OpenID provider as "
#~ "well."
-#~ msgid "Logout now"
-#~ msgstr "Logout Now"
-
#~ msgid "reputation points"
#~ msgstr "karma"
diff --git a/askbot/locale/ko/LC_MESSAGES/djangojs.mo b/askbot/locale/ko/LC_MESSAGES/djangojs.mo
index 94448970..4f02b12f 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 b033cb97..232929f9 100644
--- a/askbot/locale/ko/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ko/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-10-08 02:29-0500\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"
@@ -17,49 +17,324 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+
+#: 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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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/pt_BR/LC_MESSAGES/django.mo b/askbot/locale/pt_BR/LC_MESSAGES/django.mo
index 172807a7..143a0ceb 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 7922da45..120ac747 100644
--- a/askbot/locale/pt_BR/LC_MESSAGES/django.po
+++ b/askbot/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,15 +8,15 @@ msgid ""
msgstr ""
"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:45-0600\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/"
"askbot/team/pt_BR/)\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
#: exceptions.py:13
@@ -133,19 +133,19 @@ msgstr ""
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:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr "aprovado"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr "assistido"
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr "suspenso"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr "bloqueado"
@@ -153,7 +153,7 @@ msgstr "bloqueado"
msgid "administrator"
msgstr ""
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr "moderador"
@@ -200,26 +200,35 @@ msgid "Message text"
msgstr "Texto da mensagem"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Seu nome:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "E-mail (não compartilhado com ninguém):"
+msgid "Email:"
+msgstr ""
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "A sua mensagem:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "perguntar anonimamente"
-#: forms.py:583
+#: forms.py:613
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"
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
@@ -227,11 +236,11 @@ msgstr ""
"Você fez essa pergunta de forma anônima, se você decidir revelar sua "
"identidade, por favor, marque esta caixa."
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr "revelar a identidade"
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
@@ -239,7 +248,7 @@ msgstr ""
"Desculpe, apenas o proprietário da questão anônima pode revelar sua "
"identidade, por favor, desmarque a caixa"
-#: forms.py:818
+#: 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 "
@@ -249,459 +258,492 @@ 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:856
+#: forms.py:886
msgid "this email will be linked to gravatar"
msgstr "este e-mail será ligado ao gravatar"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "Nome real"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Site"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr "Cidade"
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr "Mostrar país"
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Data de nascimento"
-#: forms.py:892
+#: forms.py:922
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:898
+#: forms.py:928
msgid "Profile"
msgstr "Perfil"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Apelido"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "este e-mail já foi registrado, por favor use outro"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Perguntada(s) por mim"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Respondida(s) por mim"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Selecionados individualmente"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Forum inteiro (filtrada por tag)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "Comentários e posts me mencionando"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "ok, vamos tentar!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "não envie e-mails, obrigado(a)"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "por favor, escolha uma das opções acima"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "about /"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "faq /"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "privacidade /"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "respostas /"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "editar /"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "revisões /"
-#: 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: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/"
msgstr "perguntas /"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "perguntar /"
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr "alterar tags/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "fechar /"
-#: 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:153
msgid "tags/"
msgstr "tags/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr "inscrever-por-tags/"
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "usuários/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "perguntas /"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "insígnias/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "mensagens/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "marcar como lida/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "upload/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "feedback/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "perguntar/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "conta/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "Configurar insígnias/"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
msgid "Badge settings"
msgstr "Configurar insígnias/"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr "Disciplinada: mínimo de votos positivos para apagar mensagem"
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr "Pressão do grupo: mínimo de votos negativos para apagar mensagem"
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr "Professor: mínimo de votos positivos para a resposta"
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr "Resposta Razoável: mínimo de votos positivos para a resposta"
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr "Resposta Boa: mínimo de votos positivos para a resposta"
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr "Resposta Ótima: mínimo de votos positivos para a resposta"
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr "Pergunta Razoável: mínimo de votos positivos para a questão"
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr "Pergunta Boa: mínimo de votos positivos para a questão"
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr "Pergunta Ótima: mínimo de votos positivos para a questão"
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr "Pergunta Popular: mínimo de visualizações"
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr "Pergunta Notável: mínimo de visualizações"
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr "Pergunta Famosa: mínimo de visualizações"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr "Autodidata: mínimo de votos positivos para a resposta"
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr ""
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr ""
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr ""
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
msgid "Default notification frequency questions asked by the user"
msgstr ""
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
msgid "Allow posting questions by email"
msgstr ""
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -709,11 +751,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -721,134 +763,134 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
msgstr ""
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -856,221 +898,220 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
msgid "Allow swapping answer with question"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
msgid "Use wildcard tags"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr ""
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "Configurar insígnias/"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
msgid "License homepage"
msgstr ""
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1078,43 +1119,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1123,11 +1164,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1137,159 +1178,159 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr ""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr ""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
msgid "Answer own question immediately"
msgstr ""
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
msgid "Accept own answer"
msgstr ""
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr ""
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr ""
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr ""
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr ""
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr ""
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr ""
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr ""
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr ""
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr ""
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr ""
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1297,44 +1338,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1342,49 +1383,49 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
msgstr ""
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
+msgid "Question page sidebar"
msgstr ""
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
msgstr ""
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
-#: conf/site_modes.py:63
-msgid "Site modes"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1392,51 +1433,51 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr ""
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1549,33 +1590,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1583,40 +1624,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1628,11 +1669,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1641,21 +1682,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1664,21 +1705,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1687,19 +1728,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1710,131 +1751,157 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
msgstr ""
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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:12
#, fuzzy
msgid "User settings"
msgstr "Configurar insígnias/"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
msgid "Allow account recovery by email"
msgstr ""
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr ""
@@ -1935,187 +2002,191 @@ msgstr ""
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr ""
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr ""
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr ""
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:141
+#: const/__init__.py:142
msgid "reminder about unanswered questions sent"
msgstr ""
-#: const/__init__.py:143
+#: const/__init__.py:146
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr ""
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr ""
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr ""
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr ""
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr ""
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr ""
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr ""
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr ""
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr ""
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr ""
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
msgid "wavatar"
msgstr ""
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr ""
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr ""
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr ""
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2238,7 +2309,7 @@ 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:203
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
msgid "signin/"
msgstr ""
@@ -2362,71 +2433,71 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
msgstr ""
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
-#: deps/django_authopenid/views.py:1092
+#: deps/django_authopenid/views.py:1098
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2434,98 +2505,32 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, 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
-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/group_settings.html:68
-msgid "Setting groups"
-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 ""
@@ -2553,15 +2558,15 @@ 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>"
+"<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>"
+"<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
@@ -2570,6 +2575,19 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+msgid "Please accept the best answer for this question:"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:64
+msgid "Please accept the best answer for these questions:"
+msgstr ""
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2618,88 +2636,99 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"go to %(email_settings_link)s to change frequency of email updates or "
+"%(admin_email)s administrator"
msgstr ""
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "últimas perguntas"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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
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 ""
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr ""
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
msgstr ""
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
msgid "blocked users cannot post"
msgstr ""
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr ""
-#: models/__init__.py:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2710,56 +2739,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2769,258 +2798,249 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr ""
-#: models/__init__.py:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr ""
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr ""
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr ""
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, python-format
msgid "Question: \"%(title)s\""
msgstr ""
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr ""
-
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3283,52 +3303,62 @@ msgstr ""
msgid "Very active in one tag"
msgstr ""
-#: models/meta.py:112
+#: 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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
msgid "\" and more"
msgstr ""
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr ""
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr ""
@@ -3341,8 +3371,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3396,6 +3426,78 @@ msgstr ""
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 ""
+
+#: 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
+#, fuzzy
+msgid "Please sign in here:"
+msgstr "últimas perguntas"
+
+#: 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 ""
+
+#: 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"
+"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
+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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr ""
@@ -3567,132 +3669,114 @@ msgstr ""
msgid "Please sign in to vote"
msgstr ""
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr ""
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:131
+#: views/readers.py:151
#, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] ""
msgstr[1] ""
-#: views/readers.py:139
+#: views/readers.py:159
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
msgstr[0] ""
msgstr[1] ""
-#: views/readers.py:177
+#: 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:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] ""
-msgstr[1] ""
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr ""
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr ""
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr ""
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr ""
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr ""
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr ""
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr ""
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr ""
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr ""
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr ""
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr ""
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr ""
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr ""
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr ""
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr ""
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr ""
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr ""
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr ""
@@ -3746,54 +3830,490 @@ msgid "sorry, we seem to have some technical difficulties"
msgstr ""
#, 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>"
+
+#, fuzzy
+#~ msgid "Your Email"
+#~ msgstr "A sua mensagem:"
+
+#, fuzzy
+#~ msgid "Validate email"
+#~ msgstr "How to validate email and why?"
+
+#, 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 "please select one of the options above"
+#~ msgstr "por favor, escolha uma das opções acima"
+
+#, fuzzy
+#~ msgid "create account"
+#~ msgstr "conta/"
+
+#, fuzzy
+#~ msgid "Logout"
+#~ msgstr "sair /"
+
+#, fuzzy
+#~ msgid "User login"
+#~ msgstr "Configurar insígnias/"
+
+#, fuzzy
+#~ msgid "provider"
+#~ msgstr "aprovado"
+
+#, fuzzy
+#~ msgid "reuse openid"
+#~ msgstr "reabrir /"
+
+#, fuzzy
+#~ msgid "Create Account"
+#~ msgstr "conta/"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "Mudar status para"
+
+#, fuzzy
+#~ msgid "Upload"
+#~ msgstr "upload/"
+
+#, fuzzy
+#~ msgid "edit"
+#~ msgstr "editar /"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "retag"
+#~ msgstr "alterar tags/"
+
+#, fuzzy
+#~ msgid "reopen"
+#~ msgstr "reabrir /"
+
+#, fuzzy
+#~ msgid "close"
+#~ msgstr "fechar /"
+
+#, fuzzy
#~ msgid "one of these is required"
#~ msgstr "Campo País é necessário"
#, fuzzy
-#~ msgid "swap with question"
+#~ msgid "faq"
+#~ msgstr "faq /"
+
+#, fuzzy
+#~ msgid "see all questions"
#~ msgstr "últimas perguntas"
#, fuzzy
-#~ msgid "Question tools"
+#~ msgid "see latest questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "see tags"
+#~ msgstr "tags"
+
+#, fuzzy
+#~ msgid "Edit answer"
+#~ msgstr "responder/"
+
+#, fuzzy
+#~ msgid "back"
+#~ msgstr "feedback/"
+
+#, fuzzy
+#~ msgid "revision"
+#~ msgstr "revisões /"
+
+#, fuzzy
+#~ msgid "select revision"
+#~ msgstr "revisões /"
+
+#, fuzzy
+#~ msgid "Ask a question"
+#~ msgstr "perguntar/"
+
+#, fuzzy
+#~ msgid "Badge"
+#~ msgstr "insígnias/"
+
+#, fuzzy
+#~ msgid "%(description)s"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "Badges summary"
+#~ msgstr "atualizar resumo:"
+
+#, fuzzy
+#~ msgid "Badges"
+#~ msgstr "insígnias/"
+
+#, fuzzy
+#~ msgid "Close question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Close the question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Rep system summary"
+#~ msgstr "atualizar resumo:"
+
+#, fuzzy
+#~ msgid "upvote"
+#~ msgstr "votar/"
+
+#, fuzzy
+#~ msgid "use tags"
+#~ msgstr "tags"
+
+#, fuzzy
+#~ msgid "downvote"
+#~ msgstr "votar/"
+
+#, fuzzy
+#~ msgid " accept own answer to own questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "open and close own questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "retag other's questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Still have questions?"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Feedback"
+#~ msgstr "feedback/"
+
+#, fuzzy
+#~ msgid "(this field is required)"
+#~ msgstr "Campo País é necessário"
+
+#, fuzzy
+#~ msgid "Send Feedback"
+#~ msgstr "feedback/"
+
+#, fuzzy
+#~ msgid "anonymous user"
+#~ msgstr "perguntar anonimamente"
+
+#, fuzzy
+#~ msgid "answered"
+#~ msgstr "responder/"
+
+#, fuzzy
+#~ msgid "previous"
+#~ msgstr "revisões /"
+
+#, fuzzy
+#~ msgid "Questions"
#~ msgstr "perguntas /"
#, fuzzy
+#~ msgid "Edit question"
+#~ msgstr "perguntar/"
+
+#, fuzzy
+#~ msgid "Change tags"
+#~ msgstr "Mudar status para"
+
+#, fuzzy
+#~ msgid "Retag"
+#~ msgstr "alterar tags/"
+
+#, fuzzy
+#~ msgid "Reopen question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Title"
+#~ msgstr "título"
+
+#, fuzzy
+#~ msgid "Reopen this question?"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Reopen this question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Revision history"
+#~ msgstr "revisões /"
+
+#, fuzzy
+#~ msgid "revision %(number)s"
+#~ msgstr "revisões /"
+
+#, fuzzy
+#~ msgid "Subscribe for tags"
+#~ msgstr "inscrever-por-tags/"
+
+#, fuzzy
+#~ msgid "by name"
+#~ msgstr "Nome real"
+
+#, fuzzy
+#~ msgid "by popularity"
+#~ msgstr "most voted"
+
+#, fuzzy
+#~ msgid "Users"
+#~ msgstr "usuários/"
+
+#, fuzzy
+#~ msgid "reputation"
+#~ msgstr "karma"
+
+#, fuzzy
#~ msgid "No questions here. "
#~ msgstr "perguntas /"
#, fuzzy
-#~ msgid "followed questions"
+#~ msgid "resetting tags"
+#~ msgstr "Configurar insígnias/"
+
+#, fuzzy
+#~ msgid "Please always feel free to ask your question!"
#~ msgstr "últimas perguntas"
-#~ msgid "Email verification subject line"
-#~ msgstr "Verification Email from Q&A forum"
+#, fuzzy
+#~ msgid "Please, post your question!"
+#~ msgstr "últimas perguntas"
-#~ msgid "how to validate email title"
-#~ msgstr "How to validate email and why?"
+#, 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 ""
-#~ "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 "oldest answers"
+#~ msgstr "oldest"
-#~ msgid "more answers"
+#, fuzzy
+#~ msgid "newest answers"
#~ msgstr "oldest"
-#~ msgid "popular"
-#~ msgstr "most voted"
+#, fuzzy
+#~ msgid "popular answers"
+#~ msgstr "oldest"
+
+#, fuzzy
+#~ msgid "Your answer"
+#~ msgstr "oldest"
+
+#, fuzzy
+#~ msgid "Answer the question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Question tools"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "click to unfollow this question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "click to follow this question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "question asked"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "question was seen"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "Related questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "edit profile"
+#~ msgstr "Perfil"
-#~ msgid "reputation points"
+#, fuzzy
+#~ msgid "Screen Name"
+#~ msgstr "Apelido"
+
+#, fuzzy
+#~ msgid "subscriptions"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "Email subscription settings"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "followed questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Sections:"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "real name"
+#~ msgstr "Nome real"
+
+#, fuzzy
+#~ msgid "user website"
+#~ msgstr "Site"
+
+#, fuzzy
+#~ msgid "age"
+#~ msgstr "insígnias/"
+
+#, fuzzy
+#~ msgid "moderation"
+#~ msgstr "moderador"
+
+#, fuzzy
+#~ msgid "User status changed"
+#~ msgstr "Configurar insígnias/"
+
+#, fuzzy
+#~ msgid "User reputation changed"
+#~ msgstr "Configurar insígnias/"
+
+#, fuzzy
+#~ msgid "Message sent"
+#~ msgstr "Texto da mensagem"
+
+#, fuzzy
+#~ msgid "Send message"
+#~ msgstr "mensagens/"
+
+#, fuzzy
+#~ msgid "User profile"
+#~ msgstr "Perfil"
+
+#, fuzzy
+#~ msgid "reputation history"
#~ msgstr "karma"
+
+#, fuzzy
+#~ msgid "votes"
+#~ msgstr "votar/"
+
+#, fuzzy
+#~ msgid "answer tips"
+#~ msgstr "respostas /"
+
+#, fuzzy
+#~ msgid "see frequently asked questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "ask a question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "login to post question info"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "Ask your question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "about"
+#~ msgstr "about /"
+
+#, fuzzy
+#~ msgid "privacy policy"
+#~ msgstr "privacidade /"
+
+#, fuzzy
+#~ msgid "give feedback"
+#~ msgstr "feedback/"
+
+#, fuzzy
+#~ msgid "users"
+#~ msgstr "usuários/"
+
+#, fuzzy
+#~ msgid "badges"
+#~ msgstr "insígnias/"
+
+#, fuzzy
+#~ msgid "question tips"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "please ask a relevant question"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "see unanswered questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "últimas perguntas"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "insígnias/"
+
+#, fuzzy
+#~ msgid "logout"
+#~ msgstr "sair /"
+
+#, fuzzy
+#~ msgid "settings"
+#~ msgstr "Configurar insígnias/"
+
+#, fuzzy
+#~ msgid "Question tags"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "questions"
+#~ msgstr "perguntas /"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "últimas perguntas"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "E-mail (não compartilhado com ninguém):"
+
+#~ msgid "Email verification subject line"
+#~ msgstr "Verification Email from Q&A forum"
diff --git a/askbot/locale/pt_BR/LC_MESSAGES/djangojs.mo b/askbot/locale/pt_BR/LC_MESSAGES/djangojs.mo
index 1b7fa761..e476a69f 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 eb07cced..4d28c27f 100644
--- a/askbot/locale/pt_BR/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/pt_BR/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-10-08 02:35-0500\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"
@@ -17,49 +17,325 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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/ro/LC_MESSAGES/django.mo b/askbot/locale/ro/LC_MESSAGES/django.mo
index 7b66727a..197dc079 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 acc3ed41..3d70c21b 100644
--- a/askbot/locale/ro/LC_MESSAGES/django.po
+++ b/askbot/locale/ro/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: ubuntu-ro\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:37-0600\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"
+"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\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"
@@ -142,19 +142,19 @@ msgstr ""
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:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr "aprobat"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr "urmărit"
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr "suspendat"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr "blocat"
@@ -163,7 +163,7 @@ msgstr "blocat"
msgid "administrator"
msgstr "Administrator"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr "moderator"
@@ -208,28 +208,38 @@ msgid "Message text"
msgstr "Text mesaj"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Nume:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Email (nu este dezvăluit altor părți):"
+#, fuzzy
+msgid "Email:"
+msgstr "email"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Mesaj:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "întreabă anonim"
-#: forms.py:583
+#: forms.py:613
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:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
@@ -237,11 +247,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:747
+#: forms.py:777
msgid "reveal identity"
msgstr "arată identitatea"
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
@@ -249,7 +259,7 @@ msgstr ""
"Doar cel care a pus întrebarea anonimă poate dezvălui identitatea, debifați "
"căsuța"
-#: forms.py:818
+#: 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 "
@@ -259,467 +269,502 @@ 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:856
+#: forms.py:886
msgid "this email will be linked to gravatar"
msgstr "această adresă de email va fi conectată cu gravatarul"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "Nume real"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Pagină web"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr "OraÈ™"
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr "Arată țara"
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Data nașterii"
-#: forms.py:892
+#: forms.py:922
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:898
+#: forms.py:928
msgid "Profile"
msgstr "Profil"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Nume afișat"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "acest email este deja înregistrat, utilizați altul"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "Alegeți filtru email etichete"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "ÃŽntrebate de mine"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Răspunse de mine"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Alese individual"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Toate întrebările (filtrate pe tag)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "Comentarii și răspunsuri în care sunt menționat eu"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "Bine, să încercăm!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "fără emailuri de la comunitate, mulțumesc"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "alegeți una dintre opțiunile de mai sus"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "despre/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "intrebari-frecvente/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "confidentialitate/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "raspunsuri/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "edit/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "revizii/"
-#: 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: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/"
msgstr "intrebari/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "intreaba/"
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr "retag/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "inchide/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "redeschide/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "raspuns/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "vot/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "etichete/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr "abonare-etichete/"
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "utilizatori/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "abonamente"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "insigne/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "mesaje/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "macheaza-citit/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "incarca/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "sugestii/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "intrebare/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "cont/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "Configurări de bază"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
msgid "Badge settings"
msgstr "Configurări insigne"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr ""
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr ""
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr ""
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr ""
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr ""
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "Configurări email și alerte"
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr "Prefixul liniei de subiect din email"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr "Număr maxim de intrări întrun email de alerte"
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "Frecvența implicită a notificărilor de noutăți"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Frecvența implicită a notificărilor de noutăți"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "Frecvența implicită a notificărilor de noutăți"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "vezi întrebările fără răspuns"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
#, 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:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "vezi întrebările fără răspuns"
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+#, 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
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr "autentificați-vă pentru a pune o întrebare"
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -727,11 +772,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -739,135 +784,135 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
msgstr ""
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Pagini statice - despre, confidențialiate, etc"
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr "Textul pentru pagina politicii de confidențialitate (format 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr "Textul pentru pagina politicii de confidențialitate (format 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -875,225 +920,224 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Răspunde întrebării"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "etichete actualizate"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
msgid "Use wildcard tags"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr ""
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "Configurări de bază"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "înapoi la pagina de start"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
#, fuzzy
msgid "Use license logo"
msgstr "siglă %(site)s"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1101,43 +1145,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1146,11 +1190,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1160,161 +1204,161 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr ""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr ""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Răspunde propriei întrebări"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "\"modifică orice răspuns"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "Marchează ofensiv"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr ""
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr ""
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr ""
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr ""
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr ""
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr ""
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr ""
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr ""
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr ""
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1322,44 +1366,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1367,52 +1411,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "Profil utilizator"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Etichete întrebare"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "Întrebări similare"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr "clic pentru a vedea cel mai puțin recent actualizate întrebări"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Pagini web"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1420,51 +1465,51 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr ""
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr "Listă separată de virgule pentru cuvintele cheie ale siteului"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "URL site pentru feedback"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
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"
@@ -1577,33 +1622,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1611,40 +1656,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1656,11 +1701,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1669,21 +1714,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1692,21 +1737,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1715,19 +1760,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1738,135 +1783,161 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Partajează această întrebare pe twitter"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr "Partajează această întrebare pe facebook"
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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:12
#, fuzzy
msgid "User settings"
msgstr "Configurări de bază"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "E-mail-ul pentru recuperarea contului a fost trimis"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
#, fuzzy
msgid "Allow adding and removing login methods"
msgstr "Adăugați una sau mai multe metode de autentificare"
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "întrebare duplicat"
@@ -1968,190 +2039,195 @@ msgstr "Întrebarea nu are răspuns"
msgid "Question has no accepted answers"
msgstr "Întrebarea nu are un răspuns acceptat"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "a pus o întrebare"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "a răspuns unei întrebări"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "întrebare comentată"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "răspuns comentat"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "întrebare editată"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "răspuns editat"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "recompensă primită"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "marcat ca cel mai bun răspuns"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "votat pozitiv"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "votat negativ"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "vot anulat"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "întrebare ștearsă"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "răspuns șters"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "marcat ca ofensator"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "etichete actualizate"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "profil utilizator complet"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "e-mail actualizat trimis utilizatorului"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "vezi întrebările fără răspuns"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "vezi întrebările fără răspuns"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "menționat în postare"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "întrebare_cu_răspuns"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "întrebare_comentată"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "răspuns_comentat"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "răspuns_acceptat"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[închis]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[șters]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "versiune inițială"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "reetichetat"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr "dezactivat"
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr "exclude cele ignorate"
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr "doar cele selectate"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr "instant"
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "zilnic"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "săptămânal"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "fără e-mail"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "ieri"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "ce este gravatarul"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "aur"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "argint"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "bronz"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2275,7 +2351,7 @@ msgid "Incorrect username."
msgstr "Nume de utilizator incorect"
#: 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:206
msgid "signin/"
msgstr "autentificare/"
@@ -2401,8 +2477,8 @@ msgstr "Autentificați-vă cu contul de %(provider)s"
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:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
@@ -2411,68 +2487,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:365
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
msgstr "Noua parolă a fost salvată"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
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:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr "E-mail-ul pentru recuperarea contului a fost trimis"
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr "Adăugați una sau mai multe metode de autentificare"
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
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:582
+#: deps/django_authopenid/views.py:588
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:584
+#: deps/django_authopenid/views.py:590
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:657
+#: deps/django_authopenid/views.py:663
#, 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:663
+#: deps/django_authopenid/views.py:669
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:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "Autentificarea pentru %(provider)s este funcțională"
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, python-format
msgid "Recover your %(site)s account"
msgstr "Recuperați contul %(site)s"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
@@ -2480,101 +2556,32 @@ msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
msgid "Site"
msgstr "Pagină web"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr "Configurări de bază"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr "Valoare implicită: \"\""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr "Valoare implicită: "
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr "Valoare implicită: %s"
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Tipurile de fișiere imagine permise sunt %(types)s"
-#: 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
-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."
-
-#: 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"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:68
-msgid "Setting groups"
-msgstr "Configurare grup"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:27
-msgid "Edit Site Settings"
-msgstr "Editați configurările site-ului"
-
-#: 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"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:66
-#, python-format
-msgid "Group settings: %(name)s"
-msgstr "Configurări grup: %(name)s"
-
-#: 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"
@@ -2602,15 +2609,15 @@ 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>"
+"<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>"
+"<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
@@ -2619,6 +2626,22 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, 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
+#, 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
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2684,13 +2707,13 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: management/commands/send_unanswered_question_reminders.py:56
#, fuzzy, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
@@ -2698,7 +2721,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"
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "administrează metodele de autentificare"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
@@ -2706,7 +2734,7 @@ msgstr ""
"Nu puteți accepta sau refuza cele mai bune răspunsuri deoarece contul "
"dumneavoastră este blocat"
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
@@ -2714,7 +2742,7 @@ msgstr ""
"Nu puteți accepta sau refuza cele mai bune răspunsuri deoarece contul "
"dumneavoastră este suspendat"
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
@@ -2723,62 +2751,68 @@ msgstr ""
"Nu se poate accepta sau revoca acceptarea pentru propriul răspuns la propria "
"întrebare"
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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 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 ""
"Numai autorul original al întrebării - %(username)s - poate accepta cel mai "
"bun răspuns"
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "nu se pot vota mesajele proprii"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr "Contul dumneavoastră pare a fi blocat "
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr "Contul dumneavoastră pare a fi suspendat "
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "Sunt necesare >%(points)s puncte pentru a vota pozitiv"
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "sunt necesare %(points)s puncte pentru a dezaprova"
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr "Utilizatorii blocați nu pot încărca fișiere"
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr "Utilizatorii suspendați nu pot încărca fișiere"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
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"
+"încărcarea de imagini este limitată utilizatorilor cu mai mult de "
+"%(min_rep)s puncte de reputație"
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: 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:437 models/__init__.py:921
+#: 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:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2796,29 +2830,29 @@ 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:476
+#: models/__init__.py:490
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:489
+#: models/__init__.py:503
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:493
+#: models/__init__.py:507
#, 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 ""
-"Ne pare rău, pentru a comenta la un mesaj este necesar un minim de %(min_rep)"
-"s puncte de reputație. Puteți în continuare să comentați mesajele și "
-"răspunsurile pentru întrebările proprii"
+"Ne pare rău, pentru a comenta la un mesaj este necesar un minim de "
+"%(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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2826,7 +2860,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:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2834,18 +2868,18 @@ msgstr ""
"Numai moderatorii, administratorii site-ului și proprietarii postării pot "
"modifica postările șterse"
-#: models/__init__.py:553
+#: models/__init__.py:567
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:557
+#: models/__init__.py:571
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:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
@@ -2853,7 +2887,7 @@ msgstr ""
"Pentru a modifica wiki-ul, este necesar un minim de %(min_rep)s puncte de "
"reputație"
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
@@ -2862,7 +2896,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:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2879,18 +2913,18 @@ msgstr[2] ""
"Nu puteți șterge întrebarea deoarece beneficiază de răspunsuri votate "
"pozitiv de alți utilizatori."
-#: models/__init__.py:647
+#: models/__init__.py:661
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:651
+#: models/__init__.py:665
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:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
@@ -2899,16 +2933,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:675
+#: models/__init__.py:689
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:679
+#: models/__init__.py:693
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:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
@@ -2917,56 +2951,56 @@ 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:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-"Ne pare rău, pentru a închide propria întrebare este nevoie de un minim de %"
-"(min_rep)s puncte de reputație"
+"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:716
+#: models/__init__.py:730
#, 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 ""
"Ne pare rău, doar administratorii, moderatorii și proprietarii mesajelor cu "
"o reputație de minim %(min_rep)s puncte de reputație pot redeschide "
"întrebări."
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-"Ne pare rău, pentru a redesche propria întrebare este nevoie de un minim de %"
-"(min_rep)s puncte de reputație"
+"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:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr "nu se poate marca ofensiv de mai multe ori"
-#: models/__init__.py:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr "utilizatorii blocați nu pot marca postări"
-#: models/__init__.py:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr "utilizatorii suspendați nu pot marca postări"
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
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"
-#: models/__init__.py:770
+#: 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:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -2974,62 +3008,62 @@ msgstr ""
"Numai proprietarii întrebării, administratorii site-ului și moderatorii pot "
"reeticheta întrebările șterse"
-#: models/__init__.py:792
+#: models/__init__.py:806
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:796
+#: models/__init__.py:810
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:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions 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"
+"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:819
+#: models/__init__.py:833
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:823
+#: models/__init__.py:837
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:827
+#: models/__init__.py:841
#, 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"
+"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:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "voturile vechi nu pot fi revocate"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "în %(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
@@ -3037,7 +3071,7 @@ msgstr[0] "acum %(hr)d oră"
msgstr[1] "acum %(hr)d ore"
msgstr[2] "acum %(hr)d de ore"
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
@@ -3045,7 +3079,7 @@ msgstr[0] "acum %(min)d minut"
msgstr[1] "acum %(min)d minute"
msgstr[2] "acum %(min)d de minute"
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
@@ -3053,51 +3087,52 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr "Anonim"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr "Administrator"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr "Moderator"
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr "Utilizator suspendat"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr "Utilizator blocat"
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr "Utilizator înregistrat"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr "Utilizator urmărit"
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr "Utilizator aprobat"
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(username)s are %(reputation)s puncte de reputație"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
@@ -3105,7 +3140,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:1736
+#: models/__init__.py:1750
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3113,7 +3148,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:1743
+#: models/__init__.py:1757
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3121,53 +3156,40 @@ msgstr[0] "o insignă de bronz"
msgstr[1] "%(count)d insigne de bronz"
msgstr[2] "%(count)d de insigne de bronz"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s și %(item2)s"
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr "%(user)s are %(badges)s"
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
+#: models/__init__.py:2195
#, python-format
msgid "Re: \"%(title)s\""
msgstr "Re: \"%(title)s\""
-#: models/__init__.py:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, python-format
msgid "Question: \"%(title)s\""
msgstr "ÃŽntrebare: „%(title)sâ€"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-"Felicitări, aÈ›i obÈ›inut o insignă „%(badge_name)sâ€. VerificaÈ›i <a href=\"%"
-"(user_profile)s\">profilul propriu</a>."
+"Felicitări, aÈ›i obÈ›inut o insignă „%(badge_name)sâ€. VerificaÈ›i <a href="
+"\"%(user_profile)s\">profilul propriu</a>."
-#: models/__init__.py:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
msgid "Your tag subscription was saved, thanks!"
msgstr "Abonarea la etichetă a fost salvată!"
-#: models/answer.py:105
-msgid ""
-"Sorry, the answer you are looking for is no longer available, because the "
-"parent question has been removed"
-msgstr ""
-"Ne pare rău, răspunsul pe care îl cautați nu mai etse disponibil deoarece "
-"întrebarea asociată a fost ștearsă"
-
-#: models/answer.py:112
-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/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3322,8 +3344,8 @@ msgid ""
"Answered a question more than %(days)s days later with at least %(votes)s "
"votes"
msgstr ""
-"A răspuns unei întrebări mai mult de %(days)s zile mai târziu cu cel puțin %"
-"(votes)s voturi"
+"A răspuns unei întrebări mai mult de %(days)s zile mai târziu cu cel puțin "
+"%(votes)s voturi"
#: models/badges.py:525
msgid "Necromancer"
@@ -3434,7 +3456,25 @@ msgstr "Expert"
msgid "Very active in one tag"
msgstr "Foarte activ pe o anumită etichetă"
-#: models/meta.py:112
+#: models/content.py:549
+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
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
+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
+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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
@@ -3442,7 +3482,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:119
+#: models/meta.py:123
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
@@ -3450,41 +3490,36 @@ 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:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr "\" și \"%s\""
-#: models/question.py:75
+#: models/question.py:66
msgid "\" and more"
msgstr "\" și în plus"
-#: models/question.py:452
-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/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s a modificat întrebarea"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s au comentat întrebările"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s au comentat răspunsurile"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s au comentat un răspuns"
@@ -3497,11 +3532,11 @@ msgstr "<em>Schimbat de moderator. Motiv:</em> %(reason)s"
#: models/repute.py:153
#, 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 puncte au fost adăugate pentru contribuția utilizatorului %"
-"(username)s la întrebarea %(question_title)s"
+"%(points)s puncte au fost adăugate pentru contribuția utilizatorului "
+"%(username)s la întrebarea %(question_title)s"
#: models/repute.py:158
#, python-format
@@ -3509,8 +3544,8 @@ msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-"%(points)s puncte au fost retrase pentru contribuția utilizatorului %"
-"(username)s la întrebarea %(question_title)s"
+"%(points)s puncte au fost retrase pentru contribuția utilizatorului "
+"%(username)s la întrebarea %(question_title)s"
#: models/tag.py:151
msgid "interesting"
@@ -3556,6 +3591,82 @@ msgstr "Săptămânal"
msgid "No email"
msgstr "Fără email"
+#: 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"
+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"
+"for any inconvenience"
+msgstr ""
+
+#: skins/default/templates/feedback_email.txt:2
+#: skins/old/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"
+
+#: skins/old/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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "nu sunt elemente în contor"
@@ -3737,33 +3848,33 @@ msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
msgid "Please sign in to vote"
msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "Sugestii pentru întrebări și răspunsuri"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Vă mulțumim pentru sugestii!"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr "Suntem interesați de sugestiile voastre!"
-#: views/readers.py:131
+#: views/readers.py:151
#, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] ""
msgstr[1] ""
-#: views/readers.py:139
+#: views/readers.py:159
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
msgstr[0] ""
msgstr[1] ""
-#: views/readers.py:177
+#: views/readers.py:199
#, python-format
msgid "%(badge_count)d %(badge_level)s badge"
msgid_plural "%(badge_count)d %(badge_level)s badges"
@@ -3771,28 +3882,7 @@ 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"
-#: views/readers.py:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "vot"
-msgstr[1] "voturi"
-msgstr[2] "de voturi"
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "răspuns"
-msgstr[1] "răspunsuri"
-msgstr[2] "de răspunsuri"
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] "afișare"
-msgstr[1] "afișări"
-msgstr[2] "de afișări"
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
@@ -3800,75 +3890,75 @@ msgstr ""
"Ne pare rău, comentariul pe care îl căutați a fost șters nu mai este "
"accesibil"
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr "moderează acest utilizator"
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr "moderează utilizator"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "profil utilizator"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "privire de ansamblu profil utilizator"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "activitate recentă utilizator"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "profil - activitate recentă"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "comentarii și răspunsuri pentru întrebările altora"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "profil - răspunsuri"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "istoria voturilor utilizatorului"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "profil - voturi"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "reputația utilizatorului în comunitate"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "profil - reputație utilizator"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "întrebările favorite ale utilizatorului"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "profile - întrebări favorite"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "schimbările au fost salvate"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "actualizările email au fost anulate"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "configurări abonament email"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "profil - abonamente email"
@@ -3928,6 +4018,359 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
+#~ msgid "Sites"
+#~ msgstr "Pagini web"
+
+#~ msgid "Documentation"
+#~ msgstr "Documentație"
+
+#~ msgid "Change password"
+#~ msgstr "Schimbă parola"
+
+#~ msgid "Log out"
+#~ msgstr "Ieșire"
+
+#~ msgid "Home"
+#~ msgstr "Acasă"
+
+#~ msgid "Edit Group Settings"
+#~ msgstr "Editare configurări de grup"
+
+#~ 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"
+
+#~ msgid "Settings included in %(name)s."
+#~ msgstr "Configurări incluse în %(name)s."
+
+#~ msgid "You don't have permission to edit values."
+#~ msgstr "Nu aveți permisiunea de a edita valorile"
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "Editați configurările site-ului"
+
+#~ msgid "Livesettings are disabled for this site."
+#~ msgstr "Configurările live sunt dezactivate pentru acest site"
+
+#~ 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"
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "Configurări grup: %(name)s"
+
+#~ msgid "Uncollapse all"
+#~ msgstr "Restrânge tot"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Introduceți %(username_token)s"
+
+#~ msgid "Change email"
+#~ msgstr "Schimbare email"
+
+#~ msgid "Save your email address"
+#~ msgstr "Salvați adresa de email"
+
+#~ msgid "change %(email)s info"
+#~ msgstr "modifică informațiile despre %(email)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 "Your new Email"
+#~ msgstr "Adresa nouă de e-mail"
+
+#~ msgid "Your Email"
+#~ msgstr "Adresa dumneavoastră de e-mail"
+
+#~ msgid "Save Email"
+#~ msgstr "Salvează adresa de e-mail"
+
+#~ msgid "Cancel"
+#~ msgstr "Anulează"
+
+#~ msgid "Validate email"
+#~ msgstr "Validează adresa de e-mail"
+
+#~ 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 "Email not changed"
+#~ msgstr "Adresa de e-mail nu a fost schimbată"
+
+#~ 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 "Email changed"
+#~ msgstr "Adresa de e-mail a fost schimbată"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "adresa curentă %(email)s poate fi utilizată pentru acest lucru"
+
+#~ msgid "Email verified"
+#~ msgstr "Adresa de e-mail a fost verificată"
+
+#~ msgid "thanks for verifying email"
+#~ msgstr "Mulțumim pentru verificarea adresei de e-mail"
+
+#~ msgid "email key not sent"
+#~ msgstr "cheia pentru adresa de e-mail nu a fost trimisă"
+
+#~ 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 "Registration"
+#~ msgstr "ÃŽnregistrare"
+
+#~ 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 ""
+#~ "%(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 ""
+#~ "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"
+
+#~ 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 "This account already exists, please use another."
+#~ msgstr "Acest cont există deja, vă rugăm să utilizați un altul."
+
+#, fuzzy
+#~ msgid "Screen name label"
+#~ msgstr "Nume afișat"
+
+#, fuzzy
+#~ msgid "Email address label"
+#~ msgstr "adresa de email"
+
+#, fuzzy
+#~ msgid "please select one of the options above"
+#~ msgstr "alegeți una dintre opțiunile de mai sus"
+
+#~ msgid "create account"
+#~ msgstr "creaţi un cont"
+
+#~ msgid "Logout"
+#~ msgstr "Ieșire"
+
+#~ msgid "User login"
+#~ msgstr "Autentificare autilizator"
+
+#, 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ă"
+
+#, fuzzy
+#~ msgid "Login or email"
+#~ msgstr "fără e-mail"
+
+#~ msgid "Password"
+#~ msgstr "Parolă"
+
+#~ msgid "Login"
+#~ msgstr "Autentificare"
+
+#~ msgid "New password"
+#~ msgstr "Parolă nouă"
+
+#~ msgid "Please, retype"
+#~ msgstr "introduceți din nou"
+
+#, fuzzy
+#~ msgid "Here are your current login methods"
+#~ msgstr "Adăugați una sau mai multe metode de autentificare"
+
+#, fuzzy
+#~ msgid "provider"
+#~ msgstr "Utilizator aprobat"
+
+#, fuzzy
+#~ msgid "last used"
+#~ msgstr "văzut ultima dată"
+
+#~ msgid "delete"
+#~ msgstr "șterge"
+
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "voturile vechi nu pot fi revocate"
+
+#, fuzzy
+#~ msgid "Still have trouble signing in?"
+#~ msgstr "Aveți și alte întrebări?"
+
+#, fuzzy
+#~ msgid "recover your account via email"
+#~ msgstr "Recuperați contul %(site)s"
+
+#, fuzzy
+#~ msgid "Recover your account via email"
+#~ msgstr "Recuperați contul %(site)s"
+
+#, fuzzy
+#~ msgid "reuse openid"
+#~ msgstr "redeschide"
+
+#, fuzzy
+#~ msgid "Find out more"
+#~ msgstr "\" și în plus"
+
+#, fuzzy
+#~ msgid "Get OpenID"
+#~ msgstr "URL OpenID"
+
+#, 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"
+
+#, fuzzy
+#~ msgid "or create a new user name and password here"
+#~ msgstr "Autentificați-vă cu numele de utilizator și parola %(provider)s"
+
+#, fuzzy
+#~ msgid "Create Account"
+#~ msgstr "creaţi un cont"
+
+#~ msgid "or"
+#~ msgstr "sau"
+
+#, fuzzy
+#~ msgid "add avatar"
+#~ msgstr "ce este gravatarul"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "Schimbă etichetele"
+
+#, fuzzy
+#~ msgid "change avatar"
+#~ msgstr "schimbările au fost salvate"
+
+#~ msgid "Upload"
+#~ msgstr "Încarcă"
+
+#~ msgid "delete avatar"
+#~ msgstr "șterge avatar"
+
+#, fuzzy
+#~ msgid "Delete These"
+#~ msgstr "răspuns șters"
+
+#~ msgid "answer permanent link"
+#~ msgstr "legătură permanentă întrebare"
+
+#~ msgid "permanent link"
+#~ msgstr "legătură permanentă"
+
+#~ msgid "edit"
+#~ msgstr "modifică"
+
+#~ 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.)"
+
+#~ msgid "flag offensive"
+#~ msgstr "marchează ofensiv"
+
+#~ msgid "undelete"
+#~ msgstr "recuperează"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "Răspunde întrebării"
+
+#, 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)"
+
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "%(question_author)s a ales acest răspuns ca fiind cel corect"
+
+#, 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"
+
+#~ msgid "close date %(closed_at)s"
+#~ msgstr "data închiderii %(closed_at)s"
+
+#~ msgid "retag"
+#~ msgstr "reetichetează"
+
+#~ msgid "reopen"
+#~ msgstr "redeschide"
+
+#~ msgid "close"
+#~ msgstr "închide"
+
+#, fuzzy
+#~ msgid "one of these is required"
+#~ msgstr "acest câmp este obligatoriu"
+
+#~ msgid "(required)"
+#~ msgstr "(obligatoriu)"
+
+#~ msgid "Toggle the real time Markdown editor preview"
+#~ msgstr "Comută previzualizare în timp real pentru textul Markdown"
+
+#~ msgid "hide preview"
+#~ msgstr "ascunde previzualizarea"
+
+#~ msgid "Related tags"
+#~ msgstr "Etichete asemămătoare"
+
+#~ msgid "Interesting tags"
+#~ msgstr "Etichete interesante"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "Adaugă"
+
+#~ msgid "Ignored tags"
+#~ msgstr "Etichete ignorate"
+
+#~ msgid "Display tag filter"
+#~ msgstr "Afișare filtre etichete"
+
#~ msgid "Page not found"
#~ msgstr "Pagina nu a fost găsită"
@@ -4005,12 +4448,6 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Save edit"
#~ msgstr "Salvează modificările"
-#~ msgid "Cancel"
-#~ msgstr "Anulează"
-
-#~ msgid "hide preview"
-#~ msgstr "ascunde previzualizarea"
-
#~ msgid "show preview"
#~ msgstr "arată previzualizarea"
@@ -4048,8 +4485,8 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ 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. 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 "
@@ -4164,8 +4601,8 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ 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 "
+#~ "- 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 "
@@ -4177,8 +4614,8 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ "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 "
+#~ "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."
@@ -4295,23 +4732,12 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ "Introduceți mai jos mesajul sugestiei.\n"
#~ " "
-#~ msgid "(please enter a valid email)"
-#~ msgstr "(introduceți o adresă de e-mail validă)"
-
#~ msgid "(this field is required)"
#~ msgstr "(acest câmp este obligatoriu)"
#~ msgid "Send Feedback"
#~ msgstr "Trimite sugestia"
-#, fuzzy
-#~ 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 "Import StackExchange data"
#~ msgstr "Importă date StackExchange"
@@ -4421,36 +4847,27 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ "frecvența cu care primiți aceste notificări sau chiar anula abonamentul. "
#~ "Vă mulțumim pentru interesul acordat forumului nostru!</p>\n"
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr "<p>Cu stimă,<br/>Administrator forum</p>"
-
#, fuzzy
#~ msgid "Share this question on %(site)s"
#~ msgstr "Partajează această întrebare pe twitter"
-#~ msgid "karma:"
-#~ msgstr "reputație:"
-
-#~ msgid "badges:"
-#~ msgstr "insigne:"
-
-#~ msgid "previous"
-#~ msgstr "precedentă"
-
-#~ msgid "current page"
-#~ msgstr "pagiona curentă"
+#, fuzzy
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "îmi place această postare (efectuați clic din nou pentru a anula)"
-#~ msgid "page number %(num)s"
-#~ msgstr "număr pagină %(num)s"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "îmi place acest răspuns (efectuați clic din nou pentru a anula)"
-#~ msgid "next page"
-#~ msgstr "pagina următoare"
+#~ msgid "current number of votes"
+#~ msgstr "număr actual de voturi"
-#~ msgid "posts per page"
-#~ msgstr "postări pe pagină"
+#, 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 "%(username)s's website is %(url)s"
-#~ msgstr "Pagina web pentru %(username)s este %(url)s"
+#~ 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 "anonymous user"
#~ msgstr "utilizator anonim"
@@ -4484,9 +4901,6 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "delete this comment"
#~ msgstr "șterge acest comentariu"
-#~ msgid "edit"
-#~ msgstr "modifică"
-
#~ msgid "add comment"
#~ msgstr "adaugă comentariu"
@@ -4504,15 +4918,23 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgstr[1] "afișează încă <strong>%(counter)s</strong> comentarii"
#~ msgstr[2] "afișează încă <strong>%(counter)s</strong> de comentarii"
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "acest câmp este obligatoriu"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "Pagina web pentru %(username)s este %(url)s"
-#~ msgid "(required)"
-#~ msgstr "(obligatoriu)"
+#~ msgid "previous"
+#~ msgstr "precedentă"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Comută previzualizare în timp real pentru textul Markdown"
+#~ msgid "current page"
+#~ msgstr "pagiona curentă"
+
+#~ msgid "page number %(num)s"
+#~ msgstr "număr pagină %(num)s"
+
+#~ msgid "next page"
+#~ msgstr "pagina următoare"
+
+#~ msgid "posts per page"
+#~ msgstr "postări pe pagină"
#~ msgid "responses for %(username)s"
#~ msgstr "răspunsuri pentru %(username)s"
@@ -4541,211 +4963,6 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Privacy policy"
#~ msgstr "Politica de confidențialitate"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "îmi place această postare (efectuați clic din nou pentru a anula)"
-
-#~ msgid "current number of votes"
-#~ msgstr "număr actual de voturi"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr ""
-#~ "nu îmi place această postare (efectuați clic din nou pentru a anula)"
-
-#~ msgid "retag"
-#~ msgstr "reetichetează"
-
-#~ msgid "reopen"
-#~ msgstr "redeschide"
-
-#~ msgid "close"
-#~ msgstr "închide"
-
-#~ 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.)"
-
-#~ msgid "flag offensive"
-#~ msgstr "marchează ofensiv"
-
-#~ msgid "undelete"
-#~ msgstr "recuperează"
-
-#~ msgid "delete"
-#~ msgstr "șterge"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr ""
-#~ "Această întrebare a fost închisă din următoarele motive \"%(close_reason)s"
-#~ "\" de către"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "data închiderii %(closed_at)s"
-
-#, 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 "oldest answers will be shown first"
-#~ msgstr "răspunsurile mai vechi vor fi afișate întâi"
-
-#~ msgid "oldest answers"
-#~ msgstr "cele mai vechi întrebări"
-
-#~ msgid "newest answers will be shown first"
-#~ msgstr "răspunsurile mai noi vor fi afișate întâi"
-
-#~ msgid "newest answers"
-#~ msgstr "cele mai noi răspunsuri"
-
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "cele mai votate răspunsuri vor fi afișate întâi"
-
-#~ msgid "popular answers"
-#~ msgstr "răspunsuri populare"
-
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "îmi place acest răspuns (efectuați clic din nou pentru a anula)"
-
-#~ 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 "mark this answer as favorite (click again to undo)"
-#~ msgstr ""
-#~ "marchează acest răspuns ca favorit (efectuați clic din nou pentru a anula)"
-
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "%(question_author)s a ales acest răspuns ca fiind cel corect"
-
-#~ msgid "answer permanent link"
-#~ msgstr "legătură permanentă întrebare"
-
-#~ msgid "permanent link"
-#~ msgstr "legătură permanentă"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Răspunde întrebării"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr " sau "
-
-#~ msgid "email"
-#~ msgstr "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"
-
-#~ 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"
-
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "Notifică-mă imediat ce apar răspunsuri noi"
-
-#~ 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 "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"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
-
-#~ msgid "Your answer"
-#~ msgstr "Răspunsul tău"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Fi primul care răspunde acestei întrebări!"
-
-#~ 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 Your Own Question"
-#~ msgstr "Răspunde propriei întrebări"
-
-#~ msgid "Answer the question"
-#~ msgstr "Răspunde întrebării"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Etichete întrebare"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "clic pentru a vedea cele mai vechi întrebări"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "clic pentru a vedea cele mai vechi întrebări"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "actualizările email au fost anulate"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "abonarea la fluxul de întrebări"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "abonarea la fluxul de întrebări"
-
-#~ msgid "Question tags"
-#~ msgstr "Etichete întrebare"
-
-#~ msgid "question asked"
-#~ msgstr "întrebare cu răspuns"
-
-#~ msgid "question was seen"
-#~ msgstr "întrebarea a fost văzută de"
-
-#~ msgid "times"
-#~ msgstr "ori"
-
-#~ msgid "last updated"
-#~ msgstr "ultima actualizare"
-
-#~ msgid "Related questions"
-#~ msgstr "Întrebări similare"
-
#~ msgid "Edit question"
#~ msgstr "Modifică întrebarea"
@@ -4815,6 +5032,10 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Tag list"
#~ msgstr "Listă etichete"
+#, fuzzy
+#~ msgid "Sort by &raquo;"
+#~ msgstr "Ordonează după:"
+
#~ msgid "sorted alphabetically"
#~ msgstr "ordonate alfabetic"
@@ -4845,331 +5066,221 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Nothing found."
#~ msgstr "Nu s-a găsit nimic."
-#~ msgid "Change email"
-#~ msgstr "Schimbare email"
-
-#~ msgid "Save your email address"
-#~ msgstr "Salvați adresa de email"
-
-#~ msgid "change %(email)s info"
-#~ msgstr "modifică informațiile despre %(email)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 "Your new Email"
-#~ msgstr "Adresa nouă de e-mail"
-
-#~ msgid "Your Email"
-#~ msgstr "Adresa dumneavoastră de e-mail"
-
-#~ msgid "Save Email"
-#~ msgstr "Salvează adresa de e-mail"
-
-#~ msgid "Validate email"
-#~ msgstr "Validează adresa de e-mail"
-
-#~ 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 "Email not changed"
-#~ msgstr "Adresa de e-mail nu a fost schimbată"
-
-#~ 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 "Email changed"
-#~ msgstr "Adresa de e-mail a fost schimbată"
-
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "adresa curentă %(email)s poate fi utilizată pentru acest lucru"
-
-#~ msgid "Email verified"
-#~ msgstr "Adresa de e-mail a fost verificată"
-
-#~ msgid "thanks for verifying email"
-#~ msgstr "Mulțumim pentru verificarea adresei de e-mail"
-
-#~ msgid "email key not sent"
-#~ msgstr "cheia pentru adresa de e-mail nu a fost trimisă"
-
-#~ 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 "Search tips:"
+#~ msgstr "Indicii de căutare:"
-#~ msgid "Registration"
-#~ msgstr "ÃŽnregistrare"
+#, fuzzy
+#~ msgid "reset author"
+#~ msgstr "resetare etichete"
-#~ 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 " or "
+#~ msgstr " sau "
-#~ 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 "reset tags"
+#~ msgstr "resetare etichete"
-#~ 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"
+#~ msgid "start over"
+#~ msgstr "începeți din nou"
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
#~ msgstr ""
-#~ "înregistrați informații noi pentru conectarea prin contul Facebook, "
-#~ "consultați %(gravatar_faq_url)s"
-
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Acest cont există deja, vă rugăm să utilizați un altul."
-
-#~ msgid "create account"
-#~ msgstr "creaţi un cont"
-
-#~ msgid "Your account details are:"
-#~ msgstr "Detaliile contului sunt:"
-
-#~ msgid "Username:"
-#~ msgstr "Nume utilizator:"
-
-#~ msgid "Password:"
-#~ msgstr "Parolă:"
+#~ " pentru a lărgi sau a filtra prin adăugarea mai multor etichete sau a "
+#~ "textului de căutat."
-#~ msgid "Logout"
-#~ msgstr "Ieșire"
+#~ msgid "Search tip:"
+#~ msgstr "Indiciu de căutare:"
-#~ msgid "User login"
-#~ msgstr "Autentificare autilizator"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "adăugarea de etichete și a mai multe cuvinte cheie pentru căutare"
#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "fără e-mail"
-
-#~ msgid "Password"
-#~ msgstr "Parolă"
-
-#~ msgid "Login"
-#~ msgstr "Autentificare"
-
-#~ msgid "New password"
-#~ msgstr "Parolă nouă"
-
-#~ msgid "Please, retype"
-#~ msgstr "introduceți din nou"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "vezi întrebările fără răspuns"
#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "voturile vechi nu pot fi revocate"
-
-#~ msgid "or"
-#~ msgstr "sau"
-
-#~ msgid "Upload"
-#~ msgstr "Încarcă"
-
-#~ msgid "delete avatar"
-#~ msgstr "șterge avatar"
-
-#~ msgid "answer tips"
-#~ msgstr "indicații pentru răspunsuri"
-
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "dați răspunsuri relevante pentru această comunitate"
-
-#~ 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 "please try to provide details"
-#~ msgstr "încercați să furnizați detalii"
-
-#~ msgid "be clear and concise"
-#~ msgstr "fiți clari și conciși"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "consultați secțiunea întrebărilor frecvente"
-
-#~ msgid "Markdown tips"
-#~ msgstr "indicii Markdown"
-
-#~ msgid "*italic*"
-#~ msgstr "*înclinat*"
-
-#~ msgid "**bold**"
-#~ msgstr "**îngroșat**"
+#~ msgid "No questions here. "
+#~ msgstr "întrebare_cu_răspuns"
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*înclinat* sau __înclinat__"
+#~ msgid "You can expand your search by "
+#~ msgstr "Puteți extinde căutarea prin "
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**îngroșat** sau __îngroșat__"
+#, fuzzy
+#~ msgid "resetting tags"
+#~ msgstr "resetare etichete"
-#~ msgid "link"
-#~ msgstr "legătură"
+#, fuzzy
+#~ msgid "starting over"
+#~ msgstr "începeți din nou"
-#~ msgid "text"
-#~ msgstr "text"
+#, fuzzy
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "autentificați-vă pentru a pune o întrebare"
-#~ msgid "image"
-#~ msgstr "imagine"
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "Nu ați găsit ceea ce căutați?"
-#~ msgid "numbered list:"
-#~ msgstr "listă numerotată:"
+#~ msgid "Please, post your question!"
+#~ msgstr "Vă rugăm să puneți o întrebare!"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "de asemenea sunt suportate tag-uri HTML simple"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "abonarea la fluxul de întrebări"
-#~ msgid "learn more about Markdown"
-#~ msgstr "află mai multe despre Markdown"
+#, 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 "login to post question info"
-#~ msgstr "autentificați-vă pentru a pune o întrebare"
+#, 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"
#, fuzzy
#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "este necesar %(email)s valid pentru a posta, \n"
-#~ " vezi %(email_validation_faq_url)s\n"
-#~ " "
-
-#~ msgid "Ask your question"
-#~ msgstr "Puneți întrebarea"
+#~ "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 "about"
-#~ msgstr "despre"
+#, 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 "privacy policy"
-#~ msgstr "politica de confidențialitate"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "răspunsurile mai vechi vor fi afișate întâi"
-#~ msgid "give feedback"
-#~ msgstr "oferă o sugestie"
+#~ msgid "oldest answers"
+#~ msgstr "cele mai vechi întrebări"
-#~ msgid "back to home page"
-#~ msgstr "înapoi la pagina de start"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "răspunsurile mai noi vor fi afișate întâi"
-#~ msgid "%(site)s logo"
-#~ msgstr "siglă %(site)s"
+#~ msgid "newest answers"
+#~ msgstr "cele mai noi răspunsuri"
-#~ msgid "questions"
-#~ msgstr "întrebări"
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "cele mai votate răspunsuri vor fi afișate întâi"
-#~ msgid "users"
-#~ msgstr "utilizatori"
+#~ msgid "popular answers"
+#~ msgstr "răspunsuri populare"
-#~ msgid "badges"
-#~ msgstr "insigne"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Răspunde propriei întrebări"
-#~ msgid "ask a question"
-#~ msgstr "pune o întrebare"
+#, fuzzy
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
-#~ msgid "logout"
-#~ msgstr "ieșire"
+#~ msgid "Your answer"
+#~ msgstr "Răspunsul tău"
-#~ msgid "login"
-#~ msgstr "autentificare"
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Fi primul care răspunde acestei întrebări!"
-#~ msgid "settings"
-#~ msgstr "configurări"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "puteți răspunde anonim și vă puteți autentifica după aceea"
-#~ msgid "search"
-#~ msgstr "caută"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "răspunde propriei întrebări doar pentru a oferi un răspuns"
-#~ msgid "question tips"
-#~ msgstr "indicii căutare"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "vă rugăm să dați doar răspunsul, fără discuții"
-#~ msgid "please ask a relevant question"
-#~ msgstr "puneți o întrebare relevantă"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
-#~ msgid "please try provide enough details"
-#~ msgstr "încercați să oferiți suficiente detalii"
+#~ msgid "Answer the question"
+#~ msgstr "Răspunde întrebării"
-#~ msgid "Interesting tags"
-#~ msgstr "Etichete interesante"
+#, fuzzy
+#~ msgid " or"
+#~ msgstr " sau "
-#~ msgid "Add"
-#~ msgstr "Adaugă"
+#~ msgid "email"
+#~ msgstr "email"
-#~ msgid "Ignored tags"
-#~ msgstr "Etichete ignorate"
+#, fuzzy
+#~ msgid "Question tools"
+#~ msgstr "Etichete întrebare"
-#~ msgid "Display tag filter"
-#~ msgstr "Afișare filtre etichete"
+#, fuzzy
+#~ msgid "click to unfollow this question"
+#~ msgstr "clic pentru a vedea cele mai vechi întrebări"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Nu ați găsit ceea ce căutați?"
+#, fuzzy
+#~ msgid "click to follow this question"
+#~ msgstr "clic pentru a vedea cele mai vechi întrebări"
-#~ msgid "Please, post your question!"
-#~ msgstr "Vă rugăm să puneți o întrebare!"
+#, fuzzy
+#~ msgid "email the updates"
+#~ msgstr "actualizările email au fost anulate"
-#~ msgid "subscribe to the questions feed"
+#, fuzzy
+#~ msgid "subscribe to this question rss feed"
#~ msgstr "abonarea la fluxul de întrebări"
-#~ msgid "rss feed"
-#~ msgstr "flux fss"
-
-#~ msgid "Search tips:"
-#~ msgstr "Indicii de căutare:"
-
-#~ msgid " or "
-#~ msgstr " sau "
-
-#~ msgid "reset tags"
-#~ msgstr "resetare etichete"
-
-#~ msgid "start over"
-#~ msgstr "începeți din nou"
-
-#~ 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."
+#, fuzzy
+#~ msgid "subsribe to rss feed"
+#~ msgstr "abonarea la fluxul de întrebări"
-#~ msgid "Search tip:"
-#~ msgstr "Indiciu de căutare:"
+#~ msgid "question asked"
+#~ msgstr "întrebare cu răspuns"
-#~ 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 "question was seen"
+#~ msgstr "întrebarea a fost văzută de"
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "întrebare_cu_răspuns"
+#~ msgid "times"
+#~ msgstr "ori"
-#~ msgid "You can expand your search by "
-#~ msgstr "Puteți extinde căutarea prin "
+#~ msgid "last updated"
+#~ msgstr "ultima actualizare"
-#~ msgid "Contributors"
-#~ msgstr "Contribuitori"
+#~ msgid "Related questions"
+#~ msgstr "Întrebări similare"
-#~ msgid "Related tags"
-#~ msgstr "Etichete asemămătoare"
+#~ 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 "In:"
-#~ msgstr "ÃŽn:"
+#~ 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"
-#~ msgid "see unanswered questions"
-#~ msgstr "vezi întrebările fără răspuns"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "Notifică-mă imediat ce apar răspunsuri noi"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "vezi întrebările tale favorite"
+#~ 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 "Sort by:"
-#~ msgstr "Ordonează după:"
+#~ 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 "%(username)s's profile"
#~ msgstr "Profilul pentru %(username)s"
@@ -5298,6 +5409,9 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Subtract"
#~ msgstr "Scade"
+#~ msgid "Add"
+#~ msgstr "Adaugă"
+
#~ msgid "Send message to %(username)s"
#~ msgstr "Trimite mesaj către %(username)s"
@@ -5412,6 +5526,228 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "votes"
#~ msgstr "voturi"
+#~ msgid "answer tips"
+#~ msgstr "indicații pentru răspunsuri"
+
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr "dați răspunsuri relevante pentru această comunitate"
+
+#~ 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 "please try to provide details"
+#~ msgstr "încercați să furnizați detalii"
+
+#~ msgid "be clear and concise"
+#~ msgstr "fiți clari și conciși"
+
+#~ msgid "see frequently asked questions"
+#~ msgstr "consultați secțiunea întrebărilor frecvente"
+
+#~ msgid "Markdown tips"
+#~ msgstr "indicii Markdown"
+
+#~ msgid "*italic*"
+#~ msgstr "*înclinat*"
+
+#~ msgid "**bold**"
+#~ msgstr "**îngroșat**"
+
+#~ msgid "*italic* or _italic_"
+#~ msgstr "*înclinat* sau __înclinat__"
+
+#~ msgid "**bold** or __bold__"
+#~ msgstr "**îngroșat** sau __îngroșat__"
+
+#~ msgid "link"
+#~ msgstr "legătură"
+
+#~ msgid "text"
+#~ msgstr "text"
+
+#~ msgid "image"
+#~ msgstr "imagine"
+
+#~ msgid "numbered list:"
+#~ msgstr "listă numerotată:"
+
+#~ msgid "basic HTML tags are also supported"
+#~ msgstr "de asemenea sunt suportate tag-uri HTML simple"
+
+#~ msgid "learn more about Markdown"
+#~ msgstr "află mai multe despre Markdown"
+
+#~ 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"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "este necesar %(email)s valid pentru a posta, \n"
+#~ " vezi %(email_validation_faq_url)s\n"
+#~ " "
+
+#, fuzzy
+#~ 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 "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "răspuns"
+#~ msgstr[1] "răspunsuri"
+#~ msgstr[2] "de răspunsuri"
+
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "vot"
+#~ msgstr[1] "voturi"
+#~ msgstr[2] "de voturi"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "vezi întrebările fără răspuns"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "vezi întrebările tale favorite"
+
+#~ msgid "karma:"
+#~ msgstr "reputație:"
+
+#~ msgid "badges:"
+#~ msgstr "insigne:"
+
+#~ msgid "logout"
+#~ msgstr "ieșire"
+
+#~ msgid "login"
+#~ msgstr "autentificare"
+
+#~ msgid "settings"
+#~ msgstr "configurări"
+
+#~ msgid "(please enter a valid email)"
+#~ msgstr "(introduceți o adresă de e-mail validă)"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "îmi place această postare (efectuați clic din nou pentru a anula)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr ""
+#~ "nu îmi place această postare (efectuați clic din nou pentru a anula)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr ""
+#~ "Această întrebare a fost închisă din următoarele motive \"%(close_reason)s"
+#~ "\" de către"
+
+#, 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 "mark this answer as favorite (click again to undo)"
+#~ msgstr ""
+#~ "marchează acest răspuns ca favorit (efectuați clic din nou pentru a anula)"
+
+#~ msgid "Question tags"
+#~ msgstr "Etichete întrebare"
+
+#~ msgid "questions"
+#~ msgstr "întrebări"
+
+#~ msgid "search"
+#~ msgstr "caută"
+
+#~ msgid "rss feed"
+#~ msgstr "flux fss"
+
+#~ 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):"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "Pagini web"
+
+#~ msgid "Setting groups"
+#~ msgstr "Configurare grup"
+
#~ msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!"
#~ msgstr ""
#~ "Prima dată aici? Consultați <a href=\"%s\">Întrebările frecvente</a>!"
@@ -5503,8 +5839,8 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
#~ msgstr ""
-#~ "cum să fie validate informațiile email cu %(send_email_key_url)s %"
-#~ "(gravatar_faq_url)s"
+#~ "cum să fie validate informațiile email cu %(send_email_key_url)s "
+#~ "%(gravatar_faq_url)s"
#~ msgid "more answers"
#~ msgstr "mai multe răspunsuri"
diff --git a/askbot/locale/ro/LC_MESSAGES/djangojs.mo b/askbot/locale/ro/LC_MESSAGES/djangojs.mo
index 6701db6d..ba92e8af 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 b6f24438..9bc40f29 100644
--- a/askbot/locale/ro/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ro/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-10-08 02:30-0500\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"
@@ -18,49 +18,326 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
"== 0) && (n != 0))) ? 2: 1));\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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 c41a06bf..7f478b30 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 f02af85a..d760a28a 100644
--- a/askbot/locale/ru/LC_MESSAGES/django.po
+++ b/askbot/locale/ru/LC_MESSAGES/django.po
@@ -7,16 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \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=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"
#: exceptions.py:13
@@ -140,19 +140,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr "Введите количеÑтво очков которые Ð’Ñ‹ ÑобираетеÑÑŒ вычеÑÑ‚ÑŒ или добавить."
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr "проÑтой гражданин"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr "поднадзорный пользователь"
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr "ограниченный в правах"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr "заблокированный пользователь"
@@ -161,7 +161,7 @@ msgstr "заблокированный пользователь"
msgid "administrator"
msgstr "ÐдминиÑтратор Ñайта"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr "модератор"
@@ -210,457 +210,503 @@ msgid "Message text"
msgstr "ТекÑÑ‚ ÑообщениÑ"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Ваше имÑ:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты (держитÑÑ Ð² Ñекрете):"
+#, fuzzy
+msgid "Email:"
+msgstr "email"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Ваше Ñообщение:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "анонимный"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "Этот Ð°Ð´Ñ€ÐµÑ Ð°ÑÑоциирован Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ аватаром (gravatar)"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "ÐаÑтоÑщее имÑ"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "ВебÑайт"
-#: forms.py:877
+#: forms.py:907
#, fuzzy
msgid "City"
msgstr "Критик"
-#: forms.py:886
+#: forms.py:916
#, fuzzy
msgid "Show country"
msgstr "Показывать подвал Ñтраницы."
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "День рождениÑ"
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "показываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ возраÑÑ‚, формат ГГГГ-ММ-ДД"
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr "Профиль"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Ðазвание Ñкрана"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "Ñтот Ð°Ð´Ñ€ÐµÑ ÑƒÐ¶Ðµ зарегиÑтрирован, пожалуйÑта введите другой"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "Выберите тип фильтра по темам (ключевым Ñловам)"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Заданные мной"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Отвеченные мной"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Выбранные индивидуально"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "ВеÑÑŒ форум (фильтрованный по темам)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ упоминают моё имÑ"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "хорошо - попробуем!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "ÑпаÑибо - не надо"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "пожалуйÑта Ñделайте Ваш выбор (Ñм. выше)"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr ""
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr ""
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr ""
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "otvety/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr ""
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr ""
-#: 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: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/"
msgstr "voprosy/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "sprashivaem/"
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr "izmenyaem-temy/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "zakryvaem/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "otkryvaem-zanovo/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "otvet/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "golosuem/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "temy/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "lyudi/"
-#: urls.py:210
+#: urls.py:214
msgid "subscriptions/"
msgstr "подпиÑки/"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "nagrady/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "soobsheniya/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "otmechaem-prochitannoye/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "zagruzhaem-file/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "obratnaya-svyaz/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "vopros/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "account/"
-#: conf/badges.py:12
+#: 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 ""
+
+#: conf/badges.py:13
msgid "Badge settings"
msgstr "Ðаграды"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr "За диÑциплину: минимум голоÑов за удалённое Ñообщение"
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr "Давление товарищей: минимум голоÑов против удаленного ÑообщениÑ"
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr "Учитель: минимум голоÑов за ответ"
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr "Хороший ответ: минимум голоÑов за ответ"
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr " Замечательный ответ: минимум голоÑов за ответ"
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr "ВыдающийÑÑ Ð¾Ñ‚Ð²ÐµÑ‚: минимум голоÑов за ответ"
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr "Хороший вопроÑ: минимум голоÑов за вопроÑ"
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr "Замечательный вопроÑ: минимум голоÑов за вопроÑ"
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr "Великолепный вопроÑ: минимум голоÑов за вопроÑ"
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr "ПопулÑрный вопроÑ: минимум проÑмотров"
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr "ВыдающийÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñ: минимум проÑмотров"
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr "Знаменитый вопроÑ: минимум проÑмотров"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr "Самоучка: минимум голоÑов за ответ"
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr "ÐктивиÑÑ‚: минимум голоÑов"
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr "ПроÑветитель: минимум голоÑов за принÑтый ответ"
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr "Гуру: минимум голоÑов за принÑтый ответ"
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr "Ðекромант: минимум голоÑов за ответ"
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr "Ðекромант: Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ° (дней) перед ответом"
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr "Штатный редактор: минимум правок"
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr "ПопулÑрный вопроÑ: минимальное количеÑтво звезд"
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr "Гениальный вопроÑ: минимальное количеÑтво закладок"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° и ÑиÑтема оповещений"
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ñлектронной почты в Ñтроке темы"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr "МакÑимальное количеÑтво новоÑтей в оповеÑтительном Ñообщении"
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Ðеотвеченных вопроÑов нет"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Ðеотвеченных вопроÑов нет"
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
#, fuzzy
msgid "Max. number of reminders to send about unanswered questions"
msgstr "нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Ðеотвеченных вопроÑов нет"
+
+#: 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "Ðеотвеченных вопроÑов нет"
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+#, fuzzy
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr "нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
"Требовать Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты перед публикацией Ñообщений"
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
"Подтверждение адреÑа Ñлектронной почты оÑущеÑтвлÑетÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¾Ð¹ ключа "
"проверки на email"
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr "Позволить только один аккаунт на каждый Ñлектронный почтовый адреÑ"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
"ИÑпользуйте Ñту уÑтановку Ð´Ð»Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð° пользователей которые не ввели Ð°Ð´Ñ€ÐµÑ "
"Ñлектронной почты."
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -671,31 +717,32 @@ msgstr ""
"ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ - приблизительно "
"одну минуту."
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
-msgstr "Ключи Ð´Ð»Ñ ÑвÑзи Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ ÑервиÑами, такими как Facebook, и Ñ‚.д."
+#: conf/external_keys.py:11
+#, fuzzy
+msgid "Keys for external services"
+msgstr "URL, по которому доÑтупен ÑÐµÑ€Ð²Ð¸Ñ LDAP"
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Идентификационный ключ Google"
-#: conf/external_keys.py:20
+#: conf/external_keys.py:21
#, fuzzy, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
@@ -705,11 +752,11 @@ msgstr ""
"получите ключ на <a href=\"%(google_webmasters_tools_url)s\">инÑтрументарии "
"Ð´Ð»Ñ Ð²ÐµÐ±Ð¼Ð°Ñтеров</a> от Google"
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Ключ Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ ÑервиÑа \"Google-Analytics\""
-#: conf/external_keys.py:37
+#: conf/external_keys.py:38
#, fuzzy, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
@@ -718,19 +765,19 @@ msgstr ""
"Получите ключ <a href=\"%(ga_site)s\">по Ñтой ÑÑылке</a>, еÑли Ð’Ñ‹ "
"ÑобираетеÑÑŒ пользоватьÑÑ Ð¸Ð½Ñтрументом Google-Analytics"
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr "Ðктивировать recaptcha (требуетÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° recaptcha.net)"
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr "Публичный ключ Ð´Ð»Ñ recaptcha"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr "Секретный ключ Ð´Ð»Ñ recaptcha"
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -741,11 +788,11 @@ msgstr ""
"Ñпам-роботов. ПожалуйÑта получите необходимые ключи на Ñайте <a href="
"\"http://recaptcha.net\">recaptcha.net</a>"
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr "Публичный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Facebook API"
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, fuzzy, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -757,15 +804,15 @@ msgstr ""
"получить <a href=\"http://www.facebook.com/developers/createapp.php\">здеÑÑŒ</"
"a>"
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr "Секретный ключ Ð´Ð»Ñ Facebook"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr "Публичный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Twitter API (consumer key)"
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
@@ -775,15 +822,15 @@ msgstr ""
"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
"Twitter API</a>"
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr "Секретный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Twitter API (consumer secret)"
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr "Публичный ключ Ð´Ð»Ñ LinkedIn (consumer key)"
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
@@ -792,16 +839,16 @@ msgstr ""
"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
"Twitter API</a>"
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr "Секретный ключ Ð´Ð»Ñ LinkedIn (consumer secret)"
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
#, fuzzy
msgid "ident.ca consumer key"
msgstr "Публичный ключ Ð´Ð»Ñ LinkedIn (consumer key)"
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
@@ -811,37 +858,37 @@ msgstr ""
"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
"Twitter API</a>"
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
#, fuzzy
msgid "ident.ca consumer secret"
msgstr "Секретный ключ Ð´Ð»Ñ LinkedIn (consumer secret)"
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
"ИÑпользовать протокол LDAP Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸ через пароль и Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€Ð° ÑервиÑа авторизации LDAP"
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr "URL, по которому доÑтупен ÑÐµÑ€Ð²Ð¸Ñ LDAP"
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
msgstr "Об‎‎ъÑÑните, как изменить LDAP пароль"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "ПроÑтые Ñтраницы - \"о наÑ\", \"политика о личных данных\" и.Ñ‚.д."
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr "О Ð½Ð°Ñ (в формате 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."
@@ -849,12 +896,12 @@ msgstr ""
"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr "О Ð½Ð°Ñ (в формате html)"
-#: conf/flatpages.py:33
+#: conf/flatpages.py:35
#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
@@ -863,11 +910,11 @@ msgstr ""
"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr "Политика о личных данных (в формате 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."
@@ -875,35 +922,35 @@ msgstr ""
"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
-#: conf/forum_data_rules.py:11
+#: conf/forum_data_rules.py:12
#, fuzzy
-msgid "Data entry and display"
+msgid "Data entry and display rules"
msgstr "Ввод и отображение данных"
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
"Отметьте, еÑли Ð’Ñ‹ хотите иÑпользовать функцию \"общее вики\" Ð´Ð»Ñ Ñообщений "
"на форуме"
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
#, fuzzy
msgid "Allow posting before logging in"
msgstr ""
@@ -914,7 +961,7 @@ msgstr ""
"ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ - приблизительно "
"одну минуту."
-#: 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 "
@@ -922,228 +969,227 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Ответить на вопроÑ"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "МакÑимальное количеÑтво букв в теге (ключевом Ñлове)"
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "обновленные Ñ‚Ñги "
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Ñмотреть вÑе темы"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr "ЧиÑло комментариев по-умолчанию, которое показываетÑÑ Ð¿Ð¾Ð´ ÑообщениÑми"
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
"МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð½Ðµ должна превышать %(max_len)s Ñимволов"
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° поиÑкового запроÑа в AJAX поиÑке"
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
"Значение должно равнÑÑ‚ÑŒÑÑ ÑоответÑтвующей уÑтановке в Вашей базе данных"
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr "Ðаибольшее разрешенное количеÑтво ключевых Ñлов (тегов) на вопроÑ"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr "КоличеÑтво вопроÑов отображаемых на главной Ñтранице"
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr "Что должен означать \"неотвеченный вопроÑ\"?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "ÐаÑтройка политики пользователей"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "вернутьÑÑ Ð½Ð° главную"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
#, fuzzy
msgid "Use license logo"
msgstr "логотип %(site)s"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, fuzzy, python-format
msgid "Activate %(provider)s login"
msgstr "Вход при помощи %(provider)s работает отлично"
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
-msgstr "Разметка текÑта"
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr "Ðктивировать Markdown, оптимизированный Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñтов"
-#: 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 "
@@ -1156,11 +1202,11 @@ msgstr ""
"включена при иÑпользовании MathJax, Ñ‚.к. в формате LaTeX Ñтот Ñимвол широко "
"иÑпользуетÑÑ."
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr "Поддержка MathJax (LaTeX) Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких формул"
-#: conf/markup.py:58
+#: conf/markup.py:60
#, fuzzy, python-format
msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
@@ -1169,11 +1215,11 @@ msgstr ""
"ЕÑли вы включите Ñту функцию, <a href=\"%(url)s\">mathjax</a> должен быть "
"уÑтановлен в каталоге %(dir)s"
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr "База URL-ов Ð´Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ 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 "
@@ -1183,21 +1229,21 @@ msgstr ""
"размеÑтить его лично, желательно на отдельном домене и ввеÑти URL, "
"указывающий на \"mathjax\" каталог (например: http://mysite.com/mathjax)"
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1206,11 +1252,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1220,165 +1266,166 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ñ€Ð¼Ñ‹ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹Ñтвий"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr "ГолоÑовать \"за\""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr "ГолоÑовать \"против\""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Ответьте на ÑобÑтвенный вопроÑ"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "редактировать любой ответ"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "Пометить как Ñпам"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr "Добавить комментарии"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "Удалить чужие комментарии"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr "Удалить любые вопроÑÑ‹ или ответы"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr "Загрузить файлы"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr "Закрыть ÑобÑтвенные вопроÑÑ‹"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr "Изменить теги вопроÑов, заданных другими"
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr "Заново открыть Ñвои вопроÑÑ‹"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr "Редактировать ÑообщениÑ, помеченные как вики"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr "Править чужие ÑообщениÑ"
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr "ПроÑмотреть отметки неумеÑтного контента"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr "Закрыть чужие вопроÑÑ‹"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "Заблокировать поÑÑ‚Ñ‹"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+#, fuzzy
+msgid "Karma loss and gain rules"
msgstr "Правила Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸"
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr "МакÑимальный роÑÑ‚ репутации Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð·Ð° день"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr "Увeличение репутации за положительный голоÑ"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr "Увeличение репутации Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° принÑтого ответа"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr "Увeличение репутации за пометку лучшего ответа"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr "Увeличение репутации автора ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене отрицательного голоÑа"
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr "Увeличение репутации голоÑующего при отмене голоÑа \"против\""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего при отмене выбора лучшего ответа "
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене выбора лучшего ответа"
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего \"против\""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое"
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение получило Ð³Ð¾Ð»Ð¾Ñ \"против\""
-#: 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 ""
"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое трижды на "
"одну и ту же правку"
-#: 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 ""
"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое пÑÑ‚ÑŒ раз на "
"одну и ту же правку"
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение потерÑло Ð³Ð¾Ð»Ð¾Ñ \"за\""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1386,46 +1433,46 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: conf/sidebar_main.py:36
+#: 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:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1433,52 +1480,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "Профиль пользователÑ"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Теги вопроÑа"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "похожие вопроÑÑ‹:"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr "нажмите, чтобы поÑмотреть поÑледние обновленные вопроÑÑ‹"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Сайт"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1486,54 +1534,54 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
-msgstr "ОÑновные параметры и ÑÑылки форума"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr "Ðазвание Ñайта"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr "Ключевые Ñлова Ð´Ð»Ñ Ñайта, через запÑтую"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr "Сообщение о праве ÑобÑтвенноÑти (показываетÑÑ Ð² нижней чаÑти Ñтраницы)"
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr "ОпиÑание Ñайта Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr "Краткое название форума"
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ URL форума (должна начинатьÑÑ Ñ http или https)"
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
#, fuzzy
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
"СÑылка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² приветÑтвии неавторизованному поÑетителю"
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "СÑылка на Ñайт Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑвÑзи"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
"ЕÑли оÑтавите Ñто поле пуÑтым, то Ð´Ð»Ñ Ð¿Ð¾Ñылки обратной ÑвÑзи будет "
@@ -1648,35 +1696,35 @@ msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹Ñ…"
msgid "Foreground color for accepted answer"
msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹Ñ… ответов"
-#: 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 ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr "Главный логотип"
-#: 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 ""
"Чтобы заменить логотип, выберите новый файл затем нажмите кнопку \"Ñохранить"
"\""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr "Показывать логотип"
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr "Фавикон Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ Ñайта"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1687,11 +1735,11 @@ msgstr ""
"иÑпользуетÑÑ Ð² интерфейÑе браузеров. Ðа <a href=\"%(favicon_info_url)s"
"\">ЗдеÑÑŒ</a> еÑÑ‚ÑŒ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ favicon."
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr "Кнопка Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼"
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:75
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
@@ -1699,11 +1747,11 @@ msgstr ""
"Картинка размером 88x38, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸ÑпользуетÑÑ Ð² качеÑтве кнопки Ð´Ð»Ñ "
"авторизации Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ и паролем."
-#: conf/skin_general_settings.py:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr "Отображать вÑе функции пользовательÑкого интерфейÑа вÑем пользователÑм"
-#: conf/skin_general_settings.py:90
+#: 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 "
@@ -1714,19 +1762,19 @@ msgstr ""
"фактичеÑкий доÑтуп вÑÑ‘ равно будет завиÑить от репутации, правил "
"Ð¼Ð¾Ð´ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ‚.п."
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr "Выберите тему пользовательÑкого интерфейÑа"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1738,11 +1786,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1751,21 +1799,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1774,21 +1822,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1797,19 +1845,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1820,144 +1868,172 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr "Ð ÐµÐ²Ð¸Ð·Ð¸Ñ Ð¼ÐµÐ´Ð¸Ð°-файлов Ñкина"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr "РаÑпроÑтранение информации по Ñоциальным ÑетÑм"
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
#, fuzzy
msgid "Check to enable sharing of questions on LinkedIn"
msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
#, fuzzy
msgid "Check to enable sharing of questions on Identi.ca"
msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
#, fuzzy
msgid "Check to enable sharing of questions on Google+"
msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
#, fuzzy
msgid "Enable Akismet spam detection(keys below are required)"
msgstr "Ðктивировать recaptcha (требуетÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° recaptcha.net)"
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "Data rules & Formatting"
+msgstr "Разметка текÑта"
+
+#: conf/super_groups.py:8
+#, fuzzy
+msgid "External Services"
+msgstr "Прочие уÑлуги"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr "ÐаÑтройка политики пользователей"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr "Позволить пользователÑм изменÑÑ‚ÑŒ имена"
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Email Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° выÑлан"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
#, fuzzy
msgid "Allow adding and removing login methods"
msgstr ""
"ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸. Иметь "
"два или больше методов тоже можно."
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr "Минимальное количеÑтво букв в именах пользователей"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
#, fuzzy
msgid "Name for the Anonymous user"
msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
-#: 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 ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr "КоличеÑтво голоÑов на одного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² день "
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr "МакÑимальное количеÑтво меток на одного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² день"
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr "Порог Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð± оÑтавшихÑÑ ÐµÐ¶ÐµÐ´Ð½ÐµÐ²Ð½Ñ‹Ñ… голоÑах "
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr "КоличеÑтво дней, в течение которых можно отменить голоÑ"
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
#, fuzzy
msgid "Number of days required before answering own question"
msgstr "КоличеÑтво дней, в течение которых можно отменить голоÑ"
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr "ЧиÑло Ñигналов, требуемое Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñообщений"
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "такой Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÑƒÐ¶Ðµ был задан"
@@ -2061,193 +2137,198 @@ msgstr "Ðет ни одного ответа"
msgid "Question has no accepted answers"
msgstr "Ðет принÑтого ответа"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "задан вопроÑ"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "дан ответ"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "прокомментированный вопроÑ"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "прокомментированный ответ"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "отредактированный вопроÑ"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "отредактированный ответ"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "получена награда"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "отмечен как лучший ответ"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "проголоÑовали \"за\""
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "проголоÑовали \"против\""
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "отмененный голоÑ"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "удаленный вопроÑ"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "удаленный ответ"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "отметка неумеÑтного ÑодержаниÑ"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "обновленные Ñ‚Ñги "
-#: const/__init__.py:136
+#: const/__init__.py:137
#, fuzzy
msgid "selected favorite"
msgstr "занеÑено в избранное "
-#: const/__init__.py:137
+#: const/__init__.py:138
#, fuzzy
msgid "completed user profile"
msgstr "завершенный профиль пользователÑ"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "Ñообщение выÑлано по Ñлектронной почте"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "проÑмотреть неотвеченные ворпоÑÑ‹"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "Увeличение репутации за пометку лучшего ответа"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "упомÑнуто в текÑте ÑообщениÑ"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "question_answered"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "question_commented"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "answer_commented"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "answer_accepted"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[закрыт]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[удален]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "теги изменены"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr "отключить"
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr "иÑключить игнорируемые"
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr "только избранные"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr "немедленно "
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "ежедневно"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "еженедельно"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "не поÑылать email"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "вчера"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "что такое Gravatar"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "золотаÑ"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "ÑеребрÑнаÑ"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ "
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
#, fuzzy
msgid "Gravatar"
msgstr "что такое Gravatar"
-#: const/__init__.py:295
+#: const/__init__.py:300
#, fuzzy
msgid "Uploaded Avatar"
msgstr "что такое Gravatar"
@@ -2376,7 +2457,7 @@ 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:203
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
msgid "signin/"
msgstr "vhod/"
@@ -2485,8 +2566,8 @@ msgstr "Создать пароль Ð´Ð»Ñ %(provider)s"
#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
msgstr ""
-"Соедините Ваш аккаунт на %(provider)s Ñ Ð’Ð°ÑˆÐµÐ¹ учетной запиÑью на %(site_name)"
-"s"
+"Соедините Ваш аккаунт на %(provider)s Ñ Ð’Ð°ÑˆÐµÐ¹ учетной запиÑью на "
+"%(site_name)s"
#: deps/django_authopenid/util.py:634
#, python-format
@@ -2503,8 +2584,8 @@ msgstr "Заходите через Ваш аккаунт на %(provider)s"
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s недейÑтвителен"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
@@ -2513,68 +2594,68 @@ msgstr ""
"К Ñожалению, возникла проблема при Ñоединении Ñ %(provider)s, пожалуйÑта "
"попробуйте ещё раз или зайдите через другого провайдера"
-#: deps/django_authopenid/views.py:365
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
msgstr "Ваш новый пароль Ñохранен"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr "Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль"
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr "Email Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° выÑлан"
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
"ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸. Иметь "
"два или больше методов тоже можно."
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr "ЗдеÑÑŒ можно изменить пароль и проверить текущие методы авторизации"
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
"ПожалуйÑта, подождите Ñекунду! Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ воÑÑтанавлена, но ..."
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr "К Ñожалению, Ñтот ключ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ñтек или не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼"
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr "Метод входа %(provider_name) s не ÑущеÑтвует"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr "УпÑ, извините, произошла ошибка - пожалуйÑта, попробуйте ещё раз"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "Вход при помощи %(provider)s работает отлично"
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
-"пожалуйÑта подтвердите ваш email, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ (<a href=\"%"
-"(details_url)s\">здеÑÑŒ</a>)"
+"пожалуйÑта подтвердите ваш email, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ (<a href="
+"\"%(details_url)s\">здеÑÑŒ</a>)"
-#: deps/django_authopenid/views.py:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr "ПожалуйÑта, проверьте Ñвой email и пройдите по вложенной ÑÑылке."
@@ -2582,99 +2663,32 @@ msgstr "ПожалуйÑта, проверьте Ñвой email и пройдиÑ
msgid "Site"
msgstr "Сайт"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr "Базовые наÑтройки"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr "Значение по умолчанию:\"\""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr "Значение по умолчанию:"
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr "Значение по умолчанию: %s"
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, 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
-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/group_settings.html:68
-msgid "Setting groups"
-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 "ПоздравлÑем, теперь Ð’Ñ‹ админиÑтратор на нашем форуме"
@@ -2702,15 +2716,15 @@ 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>"
+"<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>"
+"<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
@@ -2719,6 +2733,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "Будьте первым, кто ответ на Ñтот вопроÑ!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "нажмите, чтобы увидеть Ñтарые вопроÑÑ‹"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2778,14 +2807,14 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"go to %(email_settings_link)s to change frequency of email updates or "
+"%(admin_email)s administrator"
msgstr ""
"<a href=\"%(email_settings_link)s\">ЗдеÑÑŒ</a> Ð’Ñ‹ можете изменить чаÑтоту "
"раÑÑылки. ЕÑли возникнет необходимоÑÑ‚ÑŒ - пожалуйÑта ÑвÑжитеÑÑŒ Ñ "
"админиÑтратором форума по %(admin_email)s."
-#: management/commands/send_unanswered_question_reminders.py:80
+#: management/commands/send_unanswered_question_reminders.py:56
#, fuzzy, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
@@ -2793,7 +2822,12 @@ msgstr[0] "%(question_count)d Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½ в %(topics)s"
msgstr[1] "%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
msgstr[2] "%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "пожалуйÑта, выполнить вход"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
@@ -2801,7 +2835,7 @@ msgstr ""
"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ лучший ответ, потому что "
"ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована"
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
@@ -2809,7 +2843,7 @@ msgstr ""
"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ лучший ответ, потому что "
"ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена"
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
@@ -2818,62 +2852,68 @@ msgstr ""
"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ ваш ÑобÑтвенный ответ на "
"ваш вопроÑ"
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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 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 ""
"К Ñожалению, только первый автор вопроÑа - %(username)s - может принÑÑ‚ÑŒ "
"лучший ответ"
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð³Ð¾Ð»Ð¾Ñовать за ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr "К Ñожалению, ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована"
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr "К Ñожалению, ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена"
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ¹Ñ‚Ð¸Ð½Ð³Ð° требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(points)s баллов "
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¹Ñ‚Ð¸Ð½Ð³Ð° требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(points)s баллов"
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr "К Ñожалению, заблокированные пользователи не могут загружать файлы"
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr ""
"К Ñожалению, временно блокированные пользователи не могут загружать файлы"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
msgstr ""
"загрузка изображений доÑтупна только пользователÑм Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸ÐµÐ¹ > %(min_rep)s"
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
msgid "blocked users cannot post"
msgstr "заблокированные пользователи не могут размещать ÑообщениÑ"
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr "временно заблокированные пользователи не могут размещать ÑообщениÑ"
-#: models/__init__.py:464
+#: models/__init__.py:478
#, fuzzy, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2891,19 +2931,19 @@ msgstr[2] ""
"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
"только в течение 10 минут"
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
"К Ñожалению, только владелец или модератор может редактировать комментарий"
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
"К Ñожалению, так как ваш аккаунт приоÑтановлен вы можете комментировать "
"только Ñвои ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:493
+#: models/__init__.py:507
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2913,7 +2953,7 @@ msgstr ""
"балов кармы. Ð’Ñ‹ можете комментировать только Ñвои ÑобÑтвенные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ "
"ответы на ваши вопроÑÑ‹"
-#: models/__init__.py:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2921,7 +2961,7 @@ msgstr ""
"Этот поÑÑ‚ был удален, его может увидеть только владелец, админиÑтраторы "
"Ñайта и модераторы"
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2929,19 +2969,19 @@ msgstr ""
"Извините, только модераторы, админиÑтраторы Ñайта и владельцы ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
"могут редактировать удаленные ÑообщениÑ"
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
"К Ñожалению, так как Ваш ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете "
"редактировать ÑообщениÑ"
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
"К Ñожалению, так как ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете "
"редактировать только ваши ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
@@ -2949,16 +2989,16 @@ msgstr ""
"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸ÐºÐ¸ Ñообщений, требуетÑÑ %(min_rep)s баллов "
"кармы"
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ %"
-"(min_rep)s балов кармы"
+"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ "
+"%(min_rep)s балов кармы"
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2975,66 +3015,66 @@ msgstr[2] ""
"К Ñожалению, Ð’Ñ‹ не может удалить ваш вопроÑ, поÑкольку на него ответили "
"другие пользователи и их ответы получили положительные голоÑа"
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
"ÑообщениÑ"
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
"ÑообщениÑ"
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñообщений других пользователей, требуетÑÑ %"
-"(min_rep)s балов кармы"
+"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñообщений других пользователей, требуетÑÑ "
+"%(min_rep)s балов кармы"
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована вы не можете закрыть "
"вопроÑÑ‹"
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы не можете закрыть "
"вопроÑÑ‹"
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ %"
-"(min_rep)s балов кармы"
+"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ "
+"%(min_rep)s балов кармы"
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñвоего вопроÑа, требуетÑÑ %(min_rep)s балов кармы"
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-"К Ñожалению, только админиÑтраторы, модераторы или владельцы Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ >%"
-"(min_rep)s может открыть вопроÑ"
+"К Ñожалению, только админиÑтраторы, модераторы или владельцы Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ >"
+"%(min_rep)s может открыть вопроÑ"
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
@@ -3042,29 +3082,29 @@ msgstr ""
"К Ñожалению, чтобы вновь открыть ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ %(min_rep)s "
"баллов кармы"
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑ‚Ð¸Ñ‚ÑŒ Ñообщение как оÑкорбительное дважды"
-#: models/__init__.py:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr "заблокированные пользователи не могут помечать ÑообщениÑ"
-#: models/__init__.py:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr "приоÑтановленные пользователи не могут помечать ÑообщениÑ"
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr "необходимо > %(min_rep)s баллов чтобы отметить как Ñпам"
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr "%(max_flags_per_day)s превышен"
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3072,62 +3112,62 @@ msgstr ""
"К Ñожалению, только владельцы, админиÑтраторы Ñайта и модераторы могут "
"менÑÑ‚ÑŒ теги к удаленным вопроÑам"
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована вы не можете поменÑÑ‚ÑŒ "
"теги вопроÑа "
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете менÑÑ‚ÑŒ "
"теги только на Ñвои вопроÑÑ‹"
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
"комментарий"
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете удалÑÑ‚ÑŒ "
"только ваши ÑобÑтвенные комментарии"
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ² требуетÑÑ %(min_rep)s баллов кармы"
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "Ð³Ð¾Ð»Ð¾Ñ Ð½Ðµ может быть отозван"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "%(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
@@ -3135,7 +3175,7 @@ msgstr[0] "%(hr)d Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´"
msgstr[1] "%(hr)d чаÑов назад"
msgstr[2] "%(hr)d чаÑа назад"
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
@@ -3143,7 +3183,7 @@ msgstr[0] "%(min)d минуту назад"
msgstr[1] "%(min)d минут назад"
msgstr[2] "%(min)d минуты назад"
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
@@ -3151,52 +3191,53 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "анонимный"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr "ÐдминиÑтратор Ñайта"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr "С уважением, Модератор форума"
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr "ПриоÑтановленный пользователь "
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr "Заблокированный пользователь"
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr "ЗарегиÑтрированный пользователь"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr "Видный пользователь"
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr "Утвержденный Пользователь"
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(reputation)s кармы %(username)s "
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
@@ -3204,7 +3245,7 @@ msgstr[0] "<span class=\"hidden\">%(count)d</span>Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ"
msgstr[1] "%(count)d золотых медалей"
msgstr[2] "%(count)d золотых медалей"
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3212,7 +3253,7 @@ msgstr[0] "<span class=\"hidden\">%(count)d</span>ÑеребрÑÐ½Ð°Ñ Ð¼ÐµÐ´Ð°Ð
msgstr[1] "%(count)d ÑеребрÑных медалей"
msgstr[2] "%(count)d ÑеребрÑных медалей"
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3220,52 +3261,40 @@ msgstr[0] "<span class=\"hidden\">%(count)d</span>Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ Ð¼ÐµÐ´Ð°Ð»Ñ
msgstr[1] "%(count)d бронзовых медалей"
msgstr[2] "%(count)d бронзовых медалей"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s и %(item2)s"
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr "%(user)s имеет %(badges)s"
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
+#: models/__init__.py:2195
#, python-format
msgid "Re: \"%(title)s\""
msgstr "Re: \"%(title)s\""
-#: models/__init__.py:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, python-format
msgid "Question: \"%(title)s\""
msgstr "ВопроÑ: \"%(title)s\""
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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>."
+"ПоздравлÑем, вы получили '%(badge_name)s'. Проверьте Ñвой <a href="
+"\"%(user_profile)s\">профиль</a>."
-#: models/__init__.py:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr "К Ñожалению, Ñтот ответ был удален и больше не доÑтупен"
-
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3534,7 +3563,23 @@ msgstr "ЭкÑперт"
msgid "Very active in one tag"
msgstr "Очень активны в одном теге"
-#: models/meta.py:112
+#: 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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
@@ -3542,7 +3587,7 @@ msgstr ""
"К Ñожалению, комментарии который вы ищете больше не доÑтупны, потому что "
"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» удален"
-#: models/meta.py:119
+#: models/meta.py:123
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
@@ -3550,41 +3595,37 @@ msgstr ""
"К Ñожалению, комментарий который Ð’Ñ‹ ищете больше не доÑтупен, потому что "
"ответ был удален"
-#: models/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr "\" и \"%s\""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "Узнать больше"
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "Извините, Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½ и более не доÑтупен"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s отредактировали вопроÑ"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s оÑтавили комментарии"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s комментировали вопроÑÑ‹"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s комментировали ответы"
@@ -3597,8 +3638,8 @@ msgstr "<em>Изменено модератором. Причина:</em> %(reas
#: models/repute.py:153
#, 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 было добавлено за вклад %(username)s к вопроÑу %(question_title)s"
@@ -3608,8 +3649,8 @@ 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"
+"%(points)s было отобрано у %(username)s's за учаÑтие в вопроÑе "
+"%(question_title)s"
#: models/tag.py:151
msgid "interesting"
@@ -3655,6 +3696,87 @@ msgstr "Раз в неделю"
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/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
+msgid ""
+"Sincerely,\n"
+"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 "ÐŸÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке выше, вы поможете нам проверить ваш 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"
+"for any inconvenience"
+msgstr ""
+"ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
+"дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
+"приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
+
+#: skins/default/templates/feedback_email.txt:2
+#: skins/old/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"
+
+#: 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."
+msgstr ""
+"ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
+"дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
+"приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "нет"
@@ -3834,19 +3956,19 @@ msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
msgid "Please sign in to vote"
msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "СпаÑибо за отзыв!"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr "Мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ ждем ваших отзывов!"
-#: views/readers.py:131
+#: views/readers.py:151
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
@@ -3854,7 +3976,7 @@ msgstr[0] "%(q_num)s вопроÑ"
msgstr[1] "%(q_num)s вопроÑа"
msgstr[2] "%(q_num)s вопроÑов"
-#: views/readers.py:139
+#: views/readers.py:159
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
@@ -3862,7 +3984,7 @@ msgstr[0] "%(q_num)s вопроÑ"
msgstr[1] "%(q_num)s вопроÑа"
msgstr[2] "%(q_num)s вопроÑов"
-#: views/readers.py:177
+#: views/readers.py:199
#, python-format
msgid "%(badge_count)d %(badge_level)s badge"
msgid_plural "%(badge_count)d %(badge_level)s badges"
@@ -3870,102 +3992,81 @@ msgstr[0] "%(badge_count)d %(badge_level)s медаль"
msgstr[1] "%(badge_count)d %(badge_level)s медали"
msgstr[2] "%(badge_count)d %(badge_level)s медалей"
-#: views/readers.py:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "голоÑ"
-msgstr[1] "голоÑа"
-msgstr[2] "голоÑов"
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "ответ"
-msgstr[1] "ответа"
-msgstr[2] "ответов"
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] "проÑм."
-msgstr[1] "проÑм."
-msgstr[2] "проÑм."
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "Извините, но запрашиваемый комментарий был удалён"
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr "Модерировать Ñтого пользователÑ"
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr "модерировать пользователÑ"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "профиль пользователÑ"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "обзор Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "поÑледние данные по активноÑти пользователÑ"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "профиль - поÑледние данные по активноÑти"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "комментарии и ответы на другие вопроÑÑ‹"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "профиль - ответы"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "Ð³Ð¾Ð»Ð¾Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "профиль - голоÑа"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "карма Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑообщеÑтве"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "профиль - карма пользователÑ"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "избранные вопроÑÑ‹ пользователей"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "профиль - избранные вопроÑÑ‹"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email отменены"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "наÑтройки подпиÑки по Ñлектронной почте"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "профиль - подпиÑки"
@@ -4004,8 +4105,8 @@ 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>."
+"Извините, вы не вошли, поÑтому не можете оÑтавлÑÑ‚ÑŒ комментарии. <a href="
+"\"%(sign_in_url)s\">Войдите</a>."
#: views/writers.py:646
msgid "Sorry, anonymous users cannot edit comments"
@@ -4017,23 +4118,476 @@ 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>."
+"Извините, вы не вошли, поÑтому не можете удалÑÑ‚ÑŒ комментарии. <a href="
+"\"%(sign_in_url)s\">Войдите</a>."
#: views/writers.py:675
msgid "sorry, we seem to have some technical difficulties"
msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкие проблемы."
+#~ msgid "Sites"
+#~ msgstr "Сайт"
+
+#~ msgid "Documentation"
+#~ msgstr "ДокументациÑ"
+
+#~ msgid "Change password"
+#~ msgstr "Сменить пароль"
+
+#~ msgid "Log out"
+#~ msgstr "Выйти"
+
+#~ msgid "Home"
+#~ msgstr "ГлавнаÑ"
+
+#~ msgid "Edit Group Settings"
+#~ msgstr "Изменить наÑтройки групп"
+
+#~ msgid "Please correct the error below."
+#~ msgid_plural "Please correct the errors below."
+#~ msgstr[0] "ПожалуйÑта, иÑправьте ошибку, указанную ниже:"
+#~ msgstr[1] "ПожалуйÑта, иÑправьте ошибки, указанные ниже:"
+#~ msgstr[2] "ПожалуйÑта, иÑправьте ошибки, указанные ниже:"
+
+#~ msgid "Settings included in %(name)s."
+#~ msgstr "ÐаÑтройки включены в %(name)s ."
+
+#~ msgid "You don't have permission to edit values."
+#~ msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° изменение значений."
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "Изменить наÑтройки Ñайта"
+
+#~ msgid "Livesettings are disabled for this site."
+#~ msgstr "Livesettings отключены Ð´Ð»Ñ Ñтого Ñайта."
+
#~ 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"
+#~ "All configuration options must be edited in the site settings.py file"
#~ msgstr ""
-#~ "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñет чаÑтоту раÑÑылки Ñообщений по умолчанию в "
-#~ "категориÑÑ…: вопроÑÑ‹ заданные пользователем, отвеченные пользователем, "
-#~ "выбранные отдельно, вÑе вопроÑÑ‹ (отфильтрованные по темам) и ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
-#~ "которые упоминают Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, а также комментарии."
+#~ "Ð’Ñе параметры конфигурации должны быть изменены в файле settings.py "
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "ÐаÑтройки групп: %(name)s"
+
+#~ msgid "Uncollapse all"
+#~ msgstr "Развернуть вÑе"
+
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr ""
+#~ "ПожалуйÑта, введите ваше <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</span>, затем войдите"
+
+#~ msgid "(or select another login method above)"
+#~ msgstr "(или выберите один из методов входа выше)"
+
+#~ msgid "Sign in"
+#~ msgstr "Войти"
+
+#~ msgid "Change email"
+#~ msgstr "Изменить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+
+#~ msgid "Save your email address"
+#~ msgstr "Сохранить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+
+#~ msgid "change %(email)s info"
+#~ msgstr "измененить %(email)s"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr "вот почему требуетÑÑ Ñлектронной почты, Ñм. %(gravatar_faq_url)s"
+
+#~ msgid "Your new Email"
+#~ msgstr "Ваш новый Email"
+
+#~ msgid "Your Email"
+#~ msgstr "Ваш E-mail"
+
+#~ msgid "Save Email"
+#~ msgstr "Сохранить Email"
+
+#~ msgid "Cancel"
+#~ msgstr "Отменить"
+
+#~ msgid "Validate email"
+#~ msgstr "Проверить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr ""
+#~ "Проверить информацию о %(email)s или перейти на %(change_email_url)s"
+
+#~ msgid "Email not changed"
+#~ msgstr "Email не изменилÑÑ"
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr ""
+#~ "Ñтарый %(email)s Ñохранен, при желании можно изменить тут "
+#~ "%(change_email_url)s"
+
+#~ msgid "Email changed"
+#~ msgstr "Email изменен"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "текущий %(email)s может быть иÑпользован Ð´Ð»Ñ Ñтого"
+
+#~ msgid "Email verified"
+#~ msgstr "Email проверен"
+
+#~ msgid "thanks for verifying email"
+#~ msgstr "ÑпаÑибо за проверку email"
+
+#~ msgid "email key not sent"
+#~ msgstr "email ключ не отоÑлан"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "email ключ не отоÑлан на %(email)s, изменить email здеÑÑŒ %(change_link)s"
+
+#~ msgid "Registration"
+#~ 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. Email "
+#~ "так же требуетÑÑ Ñ‚Ð¾Ð¶Ðµ, Ñмотрите %(gravatar_faq_url)s"
+
+#~ 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 ""
+#~ "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Facebook подключениÑ, Ñмотрите %(gravatar_faq_url)s"
+
+#~ msgid "This account already exists, please use another."
+#~ msgstr "Эта ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уже ÑущеÑтвует, пожалуйÑта, иÑпользуйте другую."
+
+#~ msgid "Screen name label"
+#~ msgstr "Логин"
+
+#~ msgid "Email address label"
+#~ msgstr "Email"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "Получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñлектронной почте"
+
+#~ 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 "зарегиÑтрироватьÑÑ"
+
+#~ msgid "Logout"
+#~ msgstr "Выйти"
+
+#~ msgid "User login"
+#~ msgstr "Вход выполнен"
+
+#~ msgid ""
+#~ "\n"
+#~ " Your answer to %(title)s %(summary)s will be posted once you log "
+#~ "in\n"
+#~ " "
+#~ msgstr ""
+#~ "\n"
+#~ "Ваш ответ на %(title)s / %(summary)s будет опубликован, как только вы "
+#~ "войдете"
+
+#~ msgid ""
+#~ "Your question \n"
+#~ " %(title)s %(summary)s will be posted once you log in\n"
+#~ " "
+#~ msgstr ""
+#~ "Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ %(title)s / %(summary)s Ñ‹ будет опубликован поÑле того, как вы "
+#~ "войдёте"
+
+#~ 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 (или похожую) "
+#~ "технологию. Пароль к вашей внешней Ñлужбе вÑегда конфиденциален и нет "
+#~ "необходимоÑти Ñоздавать пароль при региÑтрации."
+
+#~ 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 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 ""
+#~ "Click on one of the icons below to add a new login method or re-validate "
+#~ "an existing one."
+#~ 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 ""
+#~ "Ðа данный момент вами не выбран ни один из методов входа, добавьте Ñ…Ð¾Ñ‚Ñ "
+#~ "бы один кликнув по иконке ниже."
+
+#~ msgid ""
+#~ "Please check your email and visit the enclosed link to re-connect to your "
+#~ "account"
+#~ msgstr ""
+#~ "ПожалуйÑта, проверьте ваш email и пройдите по ÑÑылке чтобы вновь войти в "
+#~ "ваш аккаунт"
+
+#~ msgid "Please enter your <span>user name and password</span>, then sign in"
+#~ msgstr ""
+#~ "ПожалуйÑта, введите ваши <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль</span>, затем "
+#~ "войдите"
+
+#~ msgid "Login failed, please try again"
+#~ msgstr "Вход завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, попробуйте ещё раз"
+
+#, fuzzy
+#~ msgid "Login or email"
+#~ msgstr "не поÑылать email"
+
+#~ msgid "Password"
+#~ msgstr "Пароль"
+
+#~ msgid "Login"
+#~ msgstr "Войти"
+
+#~ msgid ""
+#~ "To change your password - please enter the new one twice, then submit"
+#~ msgstr ""
+#~ "Чтобы изменить ваш пароль - пожалуйÑта, введите новый дважды и "
+#~ "подтвердите ввод"
+
+#~ msgid "New password"
+#~ msgstr "Ðовый пароль"
+
+#~ msgid "Please, retype"
+#~ msgstr "пожалуйÑта, ещё раз"
+
+#~ msgid "Here are your current login methods"
+#~ msgstr "Ваши текущие методы входа"
+
+#~ msgid "provider"
+#~ msgstr "провайдер"
+
+#~ msgid "last used"
+#~ msgstr "поÑледний иÑпользованный"
+
+#~ msgid "delete, if you like"
+#~ msgstr "удалите, еÑли хотите"
+
+#~ msgid "delete"
+#~ msgstr "удалить"
+
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "Ðккаунт удален."
+
+#~ msgid "Still have trouble signing in?"
+#~ msgstr "По-прежнему проблемы Ñо входом ?"
+
+#~ msgid "Please, enter your email address below and obtain a new key"
+#~ msgstr "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ и получите новый ключ"
+
+#~ msgid "Please, enter your email address below to recover your account"
+#~ msgstr ""
+#~ "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ чтобы воÑÑтановить ваш аккаунт"
+
+#~ msgid "recover your account via email"
+#~ msgstr "ВоÑÑтановить ваш аккаунт по email"
+
+#~ msgid "Send a new recovery key"
+#~ msgstr "ПоÑлать новый ключ воÑÑтановлениÑ"
+
+#~ msgid "Recover your account via email"
+#~ msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
+
+#~ msgid "Why use OpenID?"
+#~ msgstr "ПлюÑÑ‹ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenID"
+
+#~ msgid "with openid it is easier"
+#~ msgstr "С OpenID проще"
+
+#~ msgid "reuse openid"
+#~ msgstr "ИÑпользуйте везде повторно"
+
+#~ 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 "Signup"
+#~ msgstr "ЗарегиÑтрироватьÑÑ"
+
+#~ msgid "Please register by clicking on any of the icons below"
+#~ msgstr "Создайте Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль"
+
+#~ msgid "or create a new user name and password here"
+#~ msgstr "или зайдите нажав одну из кнопок ниже"
+
+#~ msgid "Create login name and password"
+#~ msgstr "Создать Ð¸Ð¼Ñ Ð¸ пароль"
+
+#~ msgid "Traditional signup info"
+#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ традиционной региÑтрации"
+
+#~ msgid ""
+#~ "Please read and type in the two words below to help us prevent automated "
+#~ "account creation."
+#~ msgstr ""
+#~ "ПожалуйÑта, прочтите и укажите два Ñлова ниже, чтобы помочь нам "
+#~ "предотвратить автоматизированные ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи."
+
+#~ msgid "Create Account"
+#~ msgstr "Создать учетную запиÑÑŒ"
+
+#~ msgid "or"
+#~ msgstr "или"
+
+#~ msgid "return to OpenID login"
+#~ msgstr "вернутьÑÑ Ðº Ñтарнице OpenID входа"
+
+#, fuzzy
+#~ msgid "add avatar"
+#~ msgstr "что такое Gravatar"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "Измененить Ñ‚Ñги"
+
+#, fuzzy
+#~ msgid "Your current avatar: "
+#~ msgstr "ПодробноÑти вашей учетной запиÑи:"
+
+#, fuzzy
+#~ msgid "change avatar"
+#~ msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены"
+
+#, fuzzy
+#~ msgid "Upload"
+#~ msgstr "zagruzhaem-file/"
+
+#, fuzzy
+#~ msgid "delete avatar"
+#~ msgstr "удаленный ответ"
+
+#, fuzzy
+#~ msgid "Delete These"
+#~ msgstr "удаленный ответ"
+
+#~ msgid "answer permanent link"
+#~ msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка на ответ"
+
+#~ msgid "permanent link"
+#~ msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка"
+
+#~ msgid "edit"
+#~ msgstr "редактировать"
+
+#~ msgid ""
+#~ "report as offensive (i.e containing spam, advertising, malicious text, "
+#~ "etc.)"
+#~ msgstr ""
+#~ "Ñообщить о Ñпаме (Ñ‚.е. ÑообщениÑÑ… Ñодержащих Ñпам, рекламу, вредоноÑные "
+#~ "ÑÑылки и Ñ‚.д.)"
+
+#~ msgid "flag offensive"
+#~ msgstr "Ñпам"
+
+#~ msgid "undelete"
+#~ msgstr "воÑÑтановить"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "Ответить на вопроÑ"
+
+#, fuzzy
+#~ msgid "mark this answer as correct (click again to undo)"
+#~ msgstr ""
+#~ "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
+
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "автор вопроÑа %(question_author)s выбрал Ñтот ответ правильным"
+
+#, fuzzy
+#~ msgid ""
+#~ "The question has been closed for the following reason <b>\"%(close_reason)"
+#~ "s\"</b> <i>by"
+#~ msgstr ""
+#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
+
+#~ msgid "close date %(closed_at)s"
+#~ msgstr "дата закрытиÑ: %(closed_at)s"
+
+#~ msgid "retag"
+#~ msgstr "изменить тег"
+
+#~ msgid "reopen"
+#~ msgstr "переоткрыть"
+
+#~ msgid "close"
+#~ msgstr "закрыть"
+
+#, fuzzy
+#~ msgid "one of these is required"
+#~ msgstr "Ñто поле обÑзательное"
+
+#~ msgid "(required)"
+#~ msgstr "(обÑзательно)"
+
+#~ msgid "Toggle the real time Markdown editor preview"
+#~ msgstr "Включить/выключить предварительный проÑмотр текÑта"
+
+#~ msgid "hide preview"
+#~ msgstr "Ñкрыть предварительный проÑмотр"
+
+#~ msgid "Related tags"
+#~ msgstr "СвÑзанные теги"
+
+#~ msgid "Interesting tags"
+#~ msgstr "Избранные теги"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "Добавить"
+
+#~ msgid "Ignored tags"
+#~ msgstr "Игнорируемые теги"
+
+#~ msgid "Display tag filter"
+#~ msgstr "Фильтр по тегам"
#~ msgid "Page not found"
#~ msgstr "Страница не найдена"
@@ -4109,12 +4663,6 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Save edit"
#~ msgstr "Сохранить"
-#~ msgid "Cancel"
-#~ msgstr "Отменить"
-
-#~ msgid "hide preview"
-#~ msgstr "Ñкрыть предварительный проÑмотр"
-
#~ msgid "show preview"
#~ msgstr "показать предварительный проÑмотр"
@@ -4151,12 +4699,12 @@ 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"
+#~ "of times each type of badge has been awarded. Give us feedback at "
+#~ "%(feedback_faq_url)s.\n"
#~ msgstr ""
#~ "Ðиже приведен ÑпиÑок доÑтупных значков и чиÑло награждений каждым из них. "
-#~ "ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ новым значкам отправлÑйте через обратную ÑвÑзь - %"
-#~ "(feedback_faq_url)s.\n"
+#~ "ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ новым значкам отправлÑйте через обратную ÑвÑзь - "
+#~ "%(feedback_faq_url)s.\n"
#~ msgid "Community badges"
#~ msgstr "Значки Ð¾Ñ‚Ð»Ð¸Ñ‡Ð¸Ñ ÑообщеÑтва"
@@ -4262,8 +4810,8 @@ 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 "
+#~ "- 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 "
@@ -4274,8 +4822,8 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "вклад будет оценен положительно. С другой Ñтороны, еÑли ответ будет "
#~ "вводить в заблуждение - Ñто будет оценено отрицательно. Каждый Ð³Ð¾Ð»Ð¾Ñ Ð² "
#~ "пользу будет генерировать <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</"
-#~ "strong> кармы, каждый Ð³Ð¾Ð»Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² - будет отнимать <strong>%"
-#~ "(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> кармы. СущеÑтвует лимит "
+#~ "strong> кармы, каждый Ð³Ð¾Ð»Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² - будет отнимать <strong>"
+#~ "%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> кармы. СущеÑтвует лимит "
#~ "<strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> кармы, который может "
#~ "быть набран за Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ за день. Ð’ таблице ниже предÑтавлены вÑе "
#~ "Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº карме Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ типа модерированиÑ."
@@ -4390,23 +4938,12 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "ждем ваших отзывов. ПожалуйÑта, введите и отправить нам Ñвое Ñообщение "
#~ "ниже."
-#~ msgid "(please enter a valid email)"
-#~ msgstr "(пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты)"
-
#~ msgid "(this field is required)"
#~ msgstr "(Ñто поле обÑзательно)"
#~ msgid "Send Feedback"
#~ msgstr "Отправить отзыв"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Hello, this is a %(site_title)s forum feedback message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "ЗдравÑтвуйте, Ñто Ñообщение обратной ÑвÑзи Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°: %(site_title)s\n"
-
#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
#~ msgstr "<p>Уважаемый %(receiving_user_name)s,</p>"
@@ -4474,8 +5011,8 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgstr ""
#~ "\n"
#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Обратите внимание - вы можете Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью <a href=\"%"
-#~ "(user_subscriptions_url)s\">изменить</a>\n"
+#~ "<p>Обратите внимание - вы можете Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью <a href="
+#~ "\"%(user_subscriptions_url)s\">изменить</a>\n"
#~ "уÑÐ»Ð¾Ð²Ð¸Ñ Ñ€Ð°ÑÑылки или отпиÑатьÑÑ Ð²Ð¾Ð²Ñе. СпаÑибо за ваш Ð¸Ð½Ñ‚ÐµÑ€ÐµÑ Ðº нашему "
#~ "форуму!</p>\n"
@@ -4486,30 +5023,22 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Share this question on %(site)s"
#~ msgstr "ПоделитьÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñом на Twitter"
-#~ msgid "karma:"
-#~ msgstr "карма:"
-
-#~ msgid "badges:"
-#~ msgstr "награды"
-
-#~ msgid "previous"
-#~ msgstr "предыдущаÑ"
-
-#~ msgid "current page"
-#~ msgstr "Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "Ñтраница номер %(num)s"
+#, fuzzy
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
-#~ msgid "next page"
-#~ msgstr "ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "мне нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
-#~ msgid "posts per page"
-#~ msgstr "Ñообщений на Ñтранице"
+#~ msgid "current number of votes"
+#~ msgstr "текущее чиÑло голоÑов"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "пользователь %(username)s имеет ÑÑ‚Ð°Ñ‚ÑƒÑ \"%(status)s\""
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "мне не нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4542,9 +5071,6 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "delete this comment"
#~ msgstr "удалить Ñтот комментарий"
-#~ msgid "edit"
-#~ msgstr "редактировать"
-
#~ msgid "add comment"
#~ msgstr "добавить комментарий"
@@ -4567,14 +5093,23 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgstr[2] "Ñмотреть еще <strong>%(counter)s</strong> комментариев"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "Ñто поле обÑзательное"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "пользователь %(username)s имеет ÑÑ‚Ð°Ñ‚ÑƒÑ \"%(status)s\""
-#~ msgid "(required)"
-#~ msgstr "(обÑзательно)"
+#~ msgid "previous"
+#~ msgstr "предыдущаÑ"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Включить/выключить предварительный проÑмотр текÑта"
+#~ msgid "current page"
+#~ msgstr "Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница"
+
+#~ msgid "page number %(num)s"
+#~ msgstr "Ñтраница номер %(num)s"
+
+#~ msgid "next page"
+#~ msgstr "ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница"
+
+#~ msgid "posts per page"
+#~ msgstr "Ñообщений на Ñтранице"
#~ msgid "responses for %(username)s"
#~ msgstr "ответы пользователю %(username)s"
@@ -4604,224 +5139,6 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Privacy policy"
#~ msgstr "КонфиденциальноÑÑ‚ÑŒ"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
-
-#~ msgid "current number of votes"
-#~ msgstr "текущее чиÑло голоÑов"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
-
-#~ msgid "retag"
-#~ msgstr "изменить тег"
-
-#~ msgid "reopen"
-#~ msgstr "переоткрыть"
-
-#~ msgid "close"
-#~ msgstr "закрыть"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "Ñообщить о Ñпаме (Ñ‚.е. ÑообщениÑÑ… Ñодержащих Ñпам, рекламу, вредоноÑные "
-#~ "ÑÑылки и Ñ‚.д.)"
-
-#~ msgid "flag offensive"
-#~ msgstr "Ñпам"
-
-#~ msgid "undelete"
-#~ msgstr "воÑÑтановить"
-
-#~ msgid "delete"
-#~ msgstr "удалить"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr ""
-#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "дата закрытиÑ: %(closed_at)s"
-
-#, 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 Ответов:"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "Ñамые Ñтарые ответы будут показаны первыми"
-
-#~ msgid "oldest answers"
-#~ msgstr "Ñамые Ñтарые ответы"
-
-#~ msgid "newest answers will be shown first"
-#~ msgstr "Ñамые новые ответы будут показаны первыми"
-
-#~ msgid "newest answers"
-#~ msgstr "Ñамые новые ответы"
-
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "ответы Ñ Ð±<b>о</b>льшим чиÑлом голоÑов будут показаны первыми"
-
-#~ msgid "popular answers"
-#~ msgstr "популÑрные ответы"
-
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "мне нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "мне не нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr ""
-#~ "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
-
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "автор вопроÑа %(question_author)s выбрал Ñтот ответ правильным"
-
-#~ msgid "answer permanent link"
-#~ msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка на ответ"
-
-#~ msgid "permanent link"
-#~ msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Ответить на вопроÑ"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "или"
-
-#~ msgid "email"
-#~ msgstr "email"
-
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "Информировать один раз в день, еÑли еÑÑ‚ÑŒ новые ответы"
-
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "Еженедельно информировать о новых ответах"
-
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "Информировать о новых ответах Ñразу"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "(в Ñвоем профиле, вы можете наÑтроить чаÑтоту оповещений по Ñлектронной "
-#~ "почте, нажав на кнопку \"подпиÑка по e-mail\" - %(profile_url)s)"
-
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr "ПоÑле входа в ÑиÑтему вы Ñможете подпиÑатьÑÑ Ð½Ð° вÑе обновлениÑ"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
-
-#~ msgid "Your answer"
-#~ msgstr "Ваш ответ"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Будьте первым, кто ответ на Ñтот вопроÑ!"
-
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "Вы можете ответить анонимно, а затем войти"
-
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "ответ на ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ ради ответа"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "пожалуйÑта, отвечайте на вопроÑÑ‹, а не вÑтупайте в обÑуждениÑ"
-
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Ответьте на ÑобÑтвенный вопроÑ"
-
-#~ msgid "Answer the question"
-#~ msgstr "Ответить на вопроÑ"
-
-#~ msgid "Question tools"
-#~ msgstr "Закладки и информациÑ"
-
-#~ msgid "click to unfollow this question"
-#~ msgstr "нажмите, чтобы удалить закладку"
-
-#~ msgid "Following"
-#~ msgstr "ЕÑÑ‚ÑŒ закладка!"
-
-#~ msgid "Unfollow"
-#~ msgstr "Убрать закладку"
-
-#~ msgid "click to follow this question"
-#~ msgstr "нажмите, чтобы добавить закладку"
-
-#~ msgid "Follow"
-#~ msgstr "Добавить закладку"
-
-#~ msgid "%(count)s follower"
-#~ msgid_plural "%(count)s followers"
-#~ msgstr[0] "%(count)s закладка"
-#~ msgstr[1] "%(count)s закладки"
-#~ msgstr[2] "%(count)s закладок"
-
-#~ msgid "email the updates"
-#~ msgstr "получить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
-
-#~ 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"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
-
-#~ msgid "Question tags"
-#~ msgstr "Теги вопроÑа"
-
-#~ msgid "Stats:"
-#~ msgstr "СтатиÑтика"
-
-#~ msgid "question asked"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» задан"
-
-#~ msgid "question was seen"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» проÑмотрен"
-
-#~ msgid "times"
-#~ msgstr "раз"
-
-#~ msgid "last updated"
-#~ msgstr "поÑледнее обновление"
-
-#~ msgid "Related questions"
-#~ msgstr "похожие вопроÑÑ‹:"
-
#~ msgid "Edit question"
#~ msgstr "Изменить вопроÑ"
@@ -4885,9 +5202,17 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Please, subscribe for the following tags:"
#~ msgstr "ПожалуйÑта, подпишитеÑÑŒ на темы:"
+#, fuzzy
+#~ msgid "Subscribe"
+#~ msgstr "иÑпользовать теги"
+
#~ msgid "Tag list"
#~ msgstr "СпиÑок тегов"
+#, fuzzy
+#~ msgid "Sort by &raquo;"
+#~ msgstr "УпорÑдочить по:"
+
#~ msgid "sorted alphabetically"
#~ msgstr "Ñортировать в алфавитном порÑдке"
@@ -4921,451 +5246,68 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Nothing found."
#~ msgstr "Ðичего не найдено."
-#~ msgid "Change email"
-#~ msgstr "Изменить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-
-#~ msgid "Save your email address"
-#~ msgstr "Сохранить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-
-#~ msgid "change %(email)s info"
-#~ msgstr "измененить %(email)s"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "вот почему требуетÑÑ Ñлектронной почты, Ñм. %(gravatar_faq_url)s"
-
-#~ msgid "Your new Email"
-#~ msgstr "Ваш новый Email"
-
-#~ msgid "Your Email"
-#~ msgstr "Ваш E-mail"
-
-#~ msgid "Save Email"
-#~ msgstr "Сохранить Email"
-
-#~ msgid "Validate email"
-#~ msgstr "Проверить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr ""
-#~ "Проверить информацию о %(email)s или перейти на %(change_email_url)s"
-
-#~ msgid "Email not changed"
-#~ msgstr "Email не изменилÑÑ"
-
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr ""
-#~ "Ñтарый %(email)s Ñохранен, при желании можно изменить тут %"
-#~ "(change_email_url)s"
-
-#~ msgid "Email changed"
-#~ msgstr "Email изменен"
-
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "текущий %(email)s может быть иÑпользован Ð´Ð»Ñ Ñтого"
-
-#~ msgid "Email verified"
-#~ msgstr "Email проверен"
-
-#~ msgid "thanks for verifying email"
-#~ msgstr "ÑпаÑибо за проверку email"
-
-#~ msgid "email key not sent"
-#~ msgstr "email ключ не отоÑлан"
-
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr ""
-#~ "email ключ не отоÑлан на %(email)s, изменить email здеÑÑŒ %(change_link)s"
-
-#~ msgid "Registration"
-#~ 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. Email "
-#~ "так же требуетÑÑ Ñ‚Ð¾Ð¶Ðµ, Ñмотрите %(gravatar_faq_url)s"
-
-#~ 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 ""
-#~ "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Facebook подключениÑ, Ñмотрите %(gravatar_faq_url)s"
-
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Эта ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уже ÑущеÑтвует, пожалуйÑта, иÑпользуйте другую."
-
-#~ msgid "Screen name label"
-#~ msgstr "Логин"
-
-#~ msgid "Email address label"
-#~ msgstr "Email"
-
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "Получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñлектронной почте"
-
-#~ 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 "зарегиÑтрироватьÑÑ"
-
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "Благодарим Ð²Ð°Ñ Ð·Ð° региÑтрацию на нашем Q/A форуме!"
-
-#~ msgid "Your account details are:"
-#~ msgstr "ПодробноÑти вашей учетной запиÑи:"
-
-#~ msgid "Username:"
-#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:"
-
-#~ msgid "Password:"
-#~ msgstr "Пароль:"
-
-#~ msgid "Please sign in here:"
-#~ msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
-
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr "С уважением, админиÑтратор форума"
-
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Ð’Ð°Ñ Ð¿Ñ€Ð¸Ð²ÐµÑ‚Ñтвует Q/A форум"
-
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr ""
-#~ "Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы воÑпользоватьÑÑ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð¼, пожалуйÑта, перейдите по ÑÑылке "
-#~ "ниже:"
-
-#~ msgid "Following the link above will help us verify your email address."
-#~ msgstr "ÐŸÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке выше, вы поможете нам проверить ваш email."
-
-#~ 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 "Logout"
-#~ msgstr "Выйти"
-
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr ""
-#~ "ПожалуйÑта, введите ваше <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</span>, затем войдите"
-
-#~ msgid "(or select another login method above)"
-#~ msgstr "(или выберите один из методов входа выше)"
-
-#~ msgid "Sign in"
-#~ msgstr "Войти"
-
-#~ msgid "User login"
-#~ msgstr "Вход выполнен"
-
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Ваш ответ на %(title)s / %(summary)s будет опубликован, как только вы "
-#~ "войдете"
-
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ %(title)s / %(summary)s Ñ‹ будет опубликован поÑле того, как вы "
-#~ "войдёте"
-
-#~ 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 (или похожую) "
-#~ "технологию. Пароль к вашей внешней Ñлужбе вÑегда конфиденциален и нет "
-#~ "необходимоÑти Ñоздавать пароль при региÑтрации."
-
-#~ 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 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 ""
-#~ "Click on one of the icons below to add a new login method or re-validate "
-#~ "an existing one."
-#~ 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 ""
-#~ "Ðа данный момент вами не выбран ни один из методов входа, добавьте Ñ…Ð¾Ñ‚Ñ "
-#~ "бы один кликнув по иконке ниже."
-
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr ""
-#~ "ПожалуйÑта, проверьте ваш email и пройдите по ÑÑылке чтобы вновь войти в "
-#~ "ваш аккаунт"
-
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr ""
-#~ "ПожалуйÑта, введите ваши <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль</span>, затем "
-#~ "войдите"
-
-#~ msgid "Login failed, please try again"
-#~ msgstr "Вход завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, попробуйте ещё раз"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "не поÑылать email"
-
-#~ msgid "Password"
-#~ msgstr "Пароль"
-
-#~ msgid "Login"
-#~ msgstr "Войти"
-
-#~ msgid ""
-#~ "To change your password - please enter the new one twice, then submit"
-#~ msgstr ""
-#~ "Чтобы изменить ваш пароль - пожалуйÑта, введите новый дважды и "
-#~ "подтвердите ввод"
-
-#~ msgid "New password"
-#~ msgstr "Ðовый пароль"
-
-#~ msgid "Please, retype"
-#~ msgstr "пожалуйÑта, ещё раз"
-
-#~ msgid "Here are your current login methods"
-#~ msgstr "Ваши текущие методы входа"
-
-#~ msgid "provider"
-#~ msgstr "провайдер"
-
-#~ msgid "last used"
-#~ msgstr "поÑледний иÑпользованный"
-
-#~ msgid "delete, if you like"
-#~ msgstr "удалите, еÑли хотите"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Ðккаунт удален."
-
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "По-прежнему проблемы Ñо входом ?"
-
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ и получите новый ключ"
-
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr ""
-#~ "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ чтобы воÑÑтановить ваш аккаунт"
-
-#~ msgid "recover your account via email"
-#~ msgstr "ВоÑÑтановить ваш аккаунт по email"
-
-#~ msgid "Send a new recovery key"
-#~ msgstr "ПоÑлать новый ключ воÑÑтановлениÑ"
-
-#~ msgid "Recover your account via email"
-#~ msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "ПлюÑÑ‹ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenID"
-
-#~ msgid "with openid it is easier"
-#~ msgstr "С OpenID проще"
-
-#~ msgid "reuse openid"
-#~ msgstr "ИÑпользуйте везде повторно"
-
-#~ 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 "Signup"
-#~ msgstr "ЗарегиÑтрироватьÑÑ"
-
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Создайте Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль"
-
-#~ msgid "or create a new user name and password here"
-#~ msgstr "или зайдите нажав одну из кнопок ниже"
-
-#~ msgid "Create login name and password"
-#~ msgstr "Создать Ð¸Ð¼Ñ Ð¸ пароль"
-
-#~ msgid "Traditional signup info"
-#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ традиционной региÑтрации"
+#~ msgid "with %(author_name)s's contributions"
+#~ msgstr "при помощи %(author_name)s"
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr ""
-#~ "ПожалуйÑта, прочтите и укажите два Ñлова ниже, чтобы помочь нам "
-#~ "предотвратить автоматизированные ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи."
+#~ msgid "Search tips:"
+#~ msgstr "Советы по поиÑку:"
-#~ msgid "Create Account"
-#~ msgstr "Создать учетную запиÑÑŒ"
+#~ msgid "reset author"
+#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
-#~ msgid "or"
+#~ msgid " or "
#~ msgstr "или"
-#~ msgid "return to OpenID login"
-#~ msgstr "вернутьÑÑ Ðº Ñтарнице OpenID входа"
+#~ msgid "reset tags"
+#~ msgstr "ÑброÑить Ñ‚Ñги"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "что такое Gravatar"
+#~ msgid "start over"
+#~ msgstr "начать вÑе Ñначала"
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Измененить Ñ‚Ñги"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
+#~ msgstr "- раÑширить или Ñузить, добавлÑÑ Ñвои метки и Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñ."
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "ПодробноÑти вашей учетной запиÑи:"
+#~ msgid "Search tip:"
+#~ msgstr "ПодÑказки Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка:"
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "добавить теги и выполнить поиÑк"
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "zagruzhaem-file/"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "Ðеотвеченных вопроÑов нет"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "удаленный ответ"
+#~ msgid "No questions here. "
+#~ msgstr "Отмеченных вопроÑов нет."
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "удаленный ответ"
-
-#~ msgid "answer tips"
-#~ msgstr "Советы как лучше давать ответы"
-
-#~ msgid "please make your answer relevant to this community"
+#~ msgid "Please follow some questions or follow some users."
#~ msgstr ""
-#~ "пожалуйÑта поÑтарайтеÑÑŒ дать ответ который будет интереÑен коллегам по "
-#~ "форуму"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "поÑтарайтеÑÑŒ на Ñамом деле дать ответ и избегать диÑкуÑÑий"
-
-#~ msgid "please try to provide details"
-#~ msgstr "включите детали в Ваш ответ"
-
-#~ msgid "be clear and concise"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть четким и лаконичным"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "поÑмотрите на чаÑто задаваемые вопроÑÑ‹"
-
-#~ msgid "Markdown tips"
-#~ msgstr "ПоддерживаетÑÑ Ñзык разметки - Markdown"
-
-#~ msgid "*italic*"
-#~ msgstr "*курÑив*"
-
-#~ msgid "**bold**"
-#~ msgstr "**жирный**"
-
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*курÑив* или _курÑив_"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**жирный шрифт** или __жирный шрифт__"
-
-#~ msgid "link"
-#~ msgstr "ÑÑылка"
-
-#~ msgid "text"
-#~ msgstr "текÑÑ‚"
+#~ "Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
-#~ msgid "image"
-#~ msgstr "изображение"
+#~ msgid "You can expand your search by "
+#~ msgstr "Ð’Ñ‹ можете раÑширить поиÑк"
-#~ msgid "numbered list:"
-#~ msgstr "пронумерованный ÑпиÑок:"
+#~ msgid "resetting author"
+#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "а также, поддерживаютÑÑ Ð¾Ñновные теги HTML"
+#~ msgid "resetting tags"
+#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ñ‚Ñгов"
-#~ msgid "learn more about Markdown"
-#~ msgstr "узнайте болше про Markdown"
+#~ msgid "starting over"
+#~ msgstr "начать Ñначала"
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ "
-#~ "анонимно</span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на "
-#~ "Ñтраницу авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет "
-#~ "опубликован как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш "
-#~ "форум очень легко. ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ "
-#~ "запиÑÑŒ - приблизительно одну минуту."
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "Ð’Ñ‹ вÑегда можете задать Ñвой вопроÑ!"
-#, 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"
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "Ðе нашли то, что иÑкали?"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "Войдите или запишитеÑÑŒ чтобы опубликовать Ваш ворпоÑ"
+#~ msgid "Please, post your question!"
+#~ msgstr "ПожалуйÑта, опубликуйте Ñвой вопроÑ!"
-#~ msgid "Ask your question"
-#~ msgstr "Задайте Ваш вопроÑ"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
#~ msgid "each tag must be shorter that %(max_chars)s character"
#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
@@ -5386,154 +5328,155 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "пожалуйÑта, иÑпользуйте до %(tag_count)s тегов, количеÑтво Ñимволов в "
#~ "каждом менее %(max_chars)s"
-#~ msgid "about"
-#~ msgstr "О наÑ"
-
-#~ msgid "privacy policy"
-#~ msgstr "политика конфиденциальноÑти"
-
-#~ msgid "give feedback"
-#~ msgstr "оÑтавить отзыв"
-
-#~ msgid "back to home page"
-#~ msgstr "вернутьÑÑ Ð½Ð° главную"
-
-#~ msgid "%(site)s logo"
-#~ msgstr "логотип %(site)s"
-
-#~ msgid "questions"
-#~ msgstr "вопроÑÑ‹"
-
-#~ msgid "users"
-#~ msgstr "пользователи"
-
-#~ msgid "badges"
-#~ 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 Ответов:"
-#~ msgid "ask a question"
-#~ msgstr "задать вопроÑ"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "Ñамые Ñтарые ответы будут показаны первыми"
-#~ msgid "logout"
-#~ msgstr "Выход"
+#~ msgid "oldest answers"
+#~ msgstr "Ñамые Ñтарые ответы"
-#~ msgid "login"
-#~ msgstr "Вход"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "Ñамые новые ответы будут показаны первыми"
-#~ msgid "settings"
-#~ msgstr "ÐаÑтройки"
+#~ msgid "newest answers"
+#~ msgstr "Ñамые новые ответы"
-#~ msgid "search"
-#~ msgstr "поиÑк"
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "ответы Ñ Ð±<b>о</b>льшим чиÑлом голоÑов будут показаны первыми"
-#~ msgid "question tips"
-#~ msgstr "подÑказки к вопроÑам"
+#~ msgid "popular answers"
+#~ msgstr "популÑрные ответы"
-#~ msgid "please ask a relevant question"
-#~ msgstr "ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑоответÑтвовать тематике ÑообщеÑтва"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Ответьте на ÑобÑтвенный вопроÑ"
-#~ msgid "please try provide enough details"
-#~ msgstr "поÑтарайтеÑÑŒ придать макÑимум информативноÑти Ñвоему вопроÑу"
+#, fuzzy
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
-#~ msgid "Interesting tags"
-#~ msgstr "Избранные теги"
+#~ msgid "Your answer"
+#~ msgstr "Ваш ответ"
-#~ msgid "Add"
-#~ msgstr "Добавить"
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Будьте первым, кто ответ на Ñтот вопроÑ!"
-#~ msgid "Ignored tags"
-#~ msgstr "Игнорируемые теги"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "Вы можете ответить анонимно, а затем войти"
-#~ msgid "Display tag filter"
-#~ msgstr "Фильтр по тегам"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "ответ на ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ ради ответа"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Ðе нашли то, что иÑкали?"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "пожалуйÑта, отвечайте на вопроÑÑ‹, а не вÑтупайте в обÑуждениÑ"
-#~ msgid "Please, post your question!"
-#~ msgstr "ПожалуйÑта, опубликуйте Ñвой вопроÑ!"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
+#~ msgid "Answer the question"
+#~ msgstr "Ответить на вопроÑ"
-#~ msgid "rss feed"
-#~ msgstr "RSS-канал"
+#, fuzzy
+#~ msgid " or"
+#~ msgstr "или"
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "при помощи %(author_name)s"
+#~ msgid "email"
+#~ msgstr "email"
-#~ msgid "Search tips:"
-#~ msgstr "Советы по поиÑку:"
+#~ msgid "Question tools"
+#~ msgstr "Закладки и информациÑ"
-#~ msgid "reset author"
-#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
+#~ msgid "click to unfollow this question"
+#~ msgstr "нажмите, чтобы удалить закладку"
-#~ msgid " or "
-#~ msgstr "или"
+#~ msgid "Following"
+#~ msgstr "ЕÑÑ‚ÑŒ закладка!"
-#~ msgid "reset tags"
-#~ msgstr "ÑброÑить Ñ‚Ñги"
+#~ msgid "Unfollow"
+#~ msgstr "Убрать закладку"
-#~ msgid "start over"
-#~ msgstr "начать вÑе Ñначала"
+#~ msgid "click to follow this question"
+#~ msgstr "нажмите, чтобы добавить закладку"
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr "- раÑширить или Ñузить, добавлÑÑ Ñвои метки и Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñ."
+#~ msgid "Follow"
+#~ msgstr "Добавить закладку"
-#~ msgid "Search tip:"
-#~ msgstr "ПодÑказки Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка:"
+#~ msgid "%(count)s follower"
+#~ msgid_plural "%(count)s followers"
+#~ msgstr[0] "%(count)s закладка"
+#~ msgstr[1] "%(count)s закладки"
+#~ msgstr[2] "%(count)s закладок"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "добавить теги и выполнить поиÑк"
+#~ msgid "email the updates"
+#~ msgstr "получить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Ðеотвеченных вопроÑов нет"
+#~ 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"
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Отмеченных вопроÑов нет."
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
#, fuzzy
-#~ msgid "Please star (bookmark) some questions or follow some users."
-#~ msgstr ""
-#~ "Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
-
-#~ msgid "You can expand your search by "
-#~ msgstr "Ð’Ñ‹ можете раÑширить поиÑк"
+#~ msgid "subsribe to rss feed"
+#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
-#~ msgid "resetting author"
-#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
+#, fuzzy
+#~ msgid "Stats"
+#~ msgstr "СтатиÑтика"
-#~ msgid "resetting tags"
-#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ñ‚Ñгов"
+#~ msgid "question asked"
+#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» задан"
-#~ msgid "starting over"
-#~ msgstr "начать Ñначала"
+#~ msgid "question was seen"
+#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» проÑмотрен"
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "Ð’Ñ‹ вÑегда можете задать Ñвой вопроÑ!"
+#~ msgid "times"
+#~ msgstr "раз"
-#~ msgid "Contributors"
-#~ msgstr "Ðвторы"
+#~ msgid "last updated"
+#~ msgstr "поÑледнее обновление"
-#~ msgid "Related tags"
-#~ msgstr "СвÑзанные теги"
+#~ msgid "Related questions"
+#~ msgstr "похожие вопроÑÑ‹:"
-#~ msgid "In:"
-#~ msgstr "Ð’:"
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "Информировать один раз в день, еÑли еÑÑ‚ÑŒ новые ответы"
-#~ msgid "see unanswered questions"
-#~ msgstr "проÑмотреть неотвеченные ворпоÑÑ‹"
+#~ msgid "Notify me weekly when there are any new answers"
+#~ msgstr "Еженедельно информировать о новых ответах"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "проÑмотр отмеченные вопроÑÑ‹"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "Информировать о новых ответах Ñразу"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Убрать закладку"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr ""
+#~ "(в Ñвоем профиле, вы можете наÑтроить чаÑтоту оповещений по Ñлектронной "
+#~ "почте, нажав на кнопку \"подпиÑка по e-mail\" - %(profile_url)s)"
-#~ msgid "Sort by:"
-#~ msgstr "УпорÑдочить по:"
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
+#~ msgstr "ПоÑле входа в ÑиÑтему вы Ñможете подпиÑатьÑÑ Ð½Ð° вÑе обновлениÑ"
#~ msgid "%(username)s's profile"
#~ msgstr "профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
@@ -5665,6 +5608,9 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Subtract"
#~ msgstr "ОтнÑÑ‚ÑŒ"
+#~ msgid "Add"
+#~ msgstr "Добавить"
+
#~ msgid "Send message to %(username)s"
#~ msgstr "Отправить Ñообщение Ð´Ð»Ñ %(username)s"
@@ -5790,6 +5736,264 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "votes"
#~ msgstr "голоÑов"
+#~ msgid "answer tips"
+#~ msgstr "Советы как лучше давать ответы"
+
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr ""
+#~ "пожалуйÑта поÑтарайтеÑÑŒ дать ответ который будет интереÑен коллегам по "
+#~ "форуму"
+
+#~ msgid "try to give an answer, rather than engage into a discussion"
+#~ msgstr "поÑтарайтеÑÑŒ на Ñамом деле дать ответ и избегать диÑкуÑÑий"
+
+#~ msgid "please try to provide details"
+#~ msgstr "включите детали в Ваш ответ"
+
+#~ msgid "be clear and concise"
+#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть четким и лаконичным"
+
+#~ msgid "see frequently asked questions"
+#~ msgstr "поÑмотрите на чаÑто задаваемые вопроÑÑ‹"
+
+#~ msgid "Markdown tips"
+#~ msgstr "ПоддерживаетÑÑ Ñзык разметки - Markdown"
+
+#~ msgid "*italic*"
+#~ msgstr "*курÑив*"
+
+#~ msgid "**bold**"
+#~ msgstr "**жирный**"
+
+#~ msgid "*italic* or _italic_"
+#~ msgstr "*курÑив* или _курÑив_"
+
+#~ msgid "**bold** or __bold__"
+#~ msgstr "**жирный шрифт** или __жирный шрифт__"
+
+#~ msgid "link"
+#~ msgstr "ÑÑылка"
+
+#~ msgid "text"
+#~ msgstr "текÑÑ‚"
+
+#~ msgid "image"
+#~ msgstr "изображение"
+
+#~ msgid "numbered list:"
+#~ msgstr "пронумерованный ÑпиÑок:"
+
+#~ msgid "basic HTML tags are also supported"
+#~ msgstr "а также, поддерживаютÑÑ Ð¾Ñновные теги HTML"
+
+#~ msgid "learn more about Markdown"
+#~ msgstr "узнайте болше про Markdown"
+
+#~ msgid "ask a question"
+#~ msgstr "задать вопроÑ"
+
+#~ msgid "login to post question info"
+#~ msgstr ""
+#~ "<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ "
+#~ "анонимно</span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на "
+#~ "Ñтраницу авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет "
+#~ "опубликован как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш "
+#~ "форум очень легко. ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ "
+#~ "запиÑÑŒ - приблизительно одну минуту."
+
+#, 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"
+
+#~ msgid "Login/signup to post your question"
+#~ msgstr "Войдите или запишитеÑÑŒ чтобы опубликовать Ваш ворпоÑ"
+
+#~ msgid "Ask your question"
+#~ msgstr "Задайте Ваш вопроÑ"
+
+#~ msgid "Contributors"
+#~ msgstr "Ðвторы"
+
+#~ msgid "about"
+#~ msgstr "О наÑ"
+
+#~ msgid "privacy policy"
+#~ msgstr "политика конфиденциальноÑти"
+
+#~ msgid "give feedback"
+#~ msgstr "оÑтавить отзыв"
+
+#~ msgid "back to home page"
+#~ msgstr "вернутьÑÑ Ð½Ð° главную"
+
+#~ msgid "%(site)s logo"
+#~ msgstr "логотип %(site)s"
+
+#~ 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 "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "проÑм."
+#~ msgstr[1] "проÑм."
+#~ msgstr[2] "проÑм."
+
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "ответ"
+#~ msgstr[1] "ответа"
+#~ msgstr[2] "ответов"
+
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "голоÑ"
+#~ msgstr[1] "голоÑа"
+#~ msgstr[2] "голоÑов"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "проÑмотреть неотвеченные ворпоÑÑ‹"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "проÑмотр отмеченные вопроÑÑ‹"
+
+#~ msgid "karma:"
+#~ msgstr "карма:"
+
+#~ msgid "badges:"
+#~ msgstr "награды"
+
+#~ msgid "logout"
+#~ msgstr "Выход"
+
+#~ msgid "login"
+#~ msgstr "Вход"
+
+#~ msgid "settings"
+#~ msgstr "ÐаÑтройки"
+
+#~ msgid "(please enter a valid email)"
+#~ msgstr "(пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты)"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr ""
+#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
+
+#, 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 Ответов:"
+
+#~ msgid "mark this answer as favorite (click again to undo)"
+#~ msgstr ""
+#~ "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
+
+#~ msgid "Question tags"
+#~ msgstr "Теги вопроÑа"
+
+#~ msgid "Stats:"
+#~ msgstr "СтатиÑтика"
+
+#~ msgid "questions"
+#~ msgstr "вопроÑÑ‹"
+
+#~ msgid "search"
+#~ msgstr "поиÑк"
+
+#~ msgid "rss feed"
+#~ msgstr "RSS-канал"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr ""
+#~ "Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
+
+#~ msgid "In:"
+#~ msgstr "Ð’:"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "Убрать закладку"
+
+#~ msgid "Sort by:"
+#~ msgstr "УпорÑдочить по:"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты (держитÑÑ Ð² Ñекрете):"
+
+#~ msgid "Keys to connect the site with external services like Facebook, etc."
+#~ msgstr "Ключи Ð´Ð»Ñ ÑвÑзи Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ ÑервиÑами, такими как Facebook, и Ñ‚.д."
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ñ€Ð¼Ñ‹ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹Ñтвий"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ 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: "
@@ -5824,8 +6028,8 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "<span class=\"big strong\">Похоже на то что Ð°Ð´Ñ€ÐµÑ Ð’Ð°ÑˆÐµÐ¹ Ñлектронной "
#~ "почты, %(email)s еще не был проверен.</span> Чтобы публиковать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
#~ "на форуме Ñначала пожалуйÑта продемонÑтрируйте что Ваша ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° "
-#~ "работает, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± етом <a href=\"%"
-#~ "(email_validation_faq_url)s\">здеÑÑŒ</a>.<br/> Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ "
+#~ "работает, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± етом <a href="
+#~ "\"%(email_validation_faq_url)s\">здеÑÑŒ</a>.<br/> Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ "
#~ "опубликован Ñразу поÑле того как ваш Ð°Ð´Ñ€ÐµÑ Ð±ÑƒÐ´ÐµÑ‚ проверен, а до тех пор "
#~ "Ð²Ð¾Ð¿Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в базе данных."
@@ -5973,8 +6177,8 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
#~ msgstr ""
-#~ "как проверить Ñлектронную почту Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(send_email_key_url)s %"
-#~ "(gravatar_faq_url)s"
+#~ "как проверить Ñлектронную почту Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(send_email_key_url)s "
+#~ "%(gravatar_faq_url)s"
#~ msgid "."
#~ msgstr "."
@@ -6618,9 +6822,6 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "details on personal information policies"
#~ msgstr "ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ личной информационной политики"
-#~ msgid "Other Services"
-#~ msgstr "Прочие уÑлуги"
-
#~ msgid "details on sharing data with third parties"
#~ msgstr "Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± обмене данными Ñ Ñ‚Ñ€ÐµÑ‚ÑŒÐ¸Ð¼Ð¸ Ñторонами"
@@ -6721,11 +6922,11 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgstr "Ð¢Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°"
#~ msgid ""
-#~ "how to login with password through external login website or use %"
-#~ "(feedback_url)s"
+#~ "how to login with password through external login website or use "
+#~ "%(feedback_url)s"
#~ msgstr ""
-#~ "как войти Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ через внешнюю учетную запиÑÑŒ или иÑпользовать %"
-#~ "(feedback_url)s"
+#~ "как войти Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ через внешнюю учетную запиÑÑŒ или иÑпользовать "
+#~ "%(feedback_url)s"
#~ msgid "password recovery information"
#~ msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ"
diff --git a/askbot/locale/ru/LC_MESSAGES/djangojs.mo b/askbot/locale/ru/LC_MESSAGES/djangojs.mo
index a4408153..41b36ee5 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 a92490fb..b1fe75a2 100644
--- a/askbot/locale/ru/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ru/LC_MESSAGES/djangojs.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-08 02:30-0500\n"
-"PO-Revision-Date: 2011-09-05 09:02\n"
-"Last-Translator: <efadeev@uci.edu>\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"
"MIME-Version: 1.0\n"
@@ -19,56 +19,337 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
"X-Translated-Using: django-rosetta 0.6.2\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr "ПроÑмотреть, изменить ÑущеÑтвующие методы авторизации."
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr "Чтобы продолжить, пожалуйÑта введите %s"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr "Соедините %(site)s Ñ Ð’Ð°ÑˆÐ¸Ð¼ аккаунтом от %(provider_name)s"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr "Измените Ваш пароль Ð´Ð»Ñ %s"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr "Изменить пароль"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr "Создать пароль Ð´Ð»Ñ %s"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr "Создать пароль"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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
+msgid "insufficient privilege"
+msgstr "недоÑтаточно прав"
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "Извините, выбрать ÑобÑтвенный ответ в качеÑтве лучшего не разрешаетÑÑ"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr "введите логин"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы голоÑовать, "
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "Ð’Ñ‹ уверены что Ñто Ñообщение неумеÑтно?"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr "Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы пожаловатьÑÑ Ð½Ð° Ñообщение, "
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "Удалить?"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+"неавторизированные пользователи не могут воÑÑтанавливать и удалÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "воÑÑтановить Ñообщение"
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr "Ñообщение удалено"
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr "Добавить закладку"
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr "добавить комментарий"
+
+#: skins/common/media/js/post.js:960
+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/default/media/js/tag_selector.js:15
+#: 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/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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/default/media/js/user.js:129
+#: 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] "Удалить Ñти извещениÑ?"
+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/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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 "Ñмотрите вопроÑÑ‹, помеченные '%s'"
+
+#: skins/common/media/js/wmd/wmd.js:30
+msgid "bold"
+msgstr "жирный"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "курÑив"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "ÑÑылка"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "цитата"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "форматирование текÑта"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "изображение"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "пронумерованный ÑпиÑок"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "маркированный ÑпиÑок"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "заголовок"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñа"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "отменить"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "повторить"
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+"введите url изображениÑ, например:<br /> http://www.domain.ru/kartinka.gif"
+
+#: skins/common/media/js/wmd/wmd.js:54
+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 ""
+
+#: skins/common/media/js/wmd/wmd.js:1781
+msgid "file name"
+msgstr "название файла"
+
+#: skins/common/media/js/wmd/wmd.js:1785
+msgid "link text"
+msgstr ""
+
#~ msgid "%(q_num)s question"
#~ msgid_plural "%(q_num)s questions"
#~ msgstr[0] "%(q_num)s вопроÑ"
diff --git a/askbot/locale/sr/LC_MESSAGES/django.mo b/askbot/locale/sr/LC_MESSAGES/django.mo
index 00cab4f5..7af3be21 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 d6b087a4..74ce30b6 100644
--- a/askbot/locale/sr/LC_MESSAGES/django.po
+++ b/askbot/locale/sr/LC_MESSAGES/django.po
@@ -7,17 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:39-0600\n"
"PO-Revision-Date: 2010-05-07 02:52\n"
"Last-Translator: <who@email.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"X-Translated-Using: django-rosetta 0.5.3\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=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"
@@ -136,19 +136,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr ""
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -159,7 +159,7 @@ msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
#, fuzzy
msgid "moderator"
msgstr "moderate-user/"
@@ -206,455 +206,499 @@ msgid "Message text"
msgstr ""
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Ваше име:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Е-пошта:"
+#, fuzzy
+msgid "Email:"
+msgstr "е-пошта/"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Ваша порука:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr ""
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "ова е-пошта не мора бити повезана Ñа gravatar-ом"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "Право име"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "ВебÑајт"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "Датум рођења"
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
"неће бити приказано, кориÑти Ñе за израчунавање ваших година, формат: ГГГГ-"
"ММ-ДД"
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr "Профил"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "КориÑничко име"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "ова е-пошта је већ региÑтрована, молимо Ð’Ð°Ñ ÑƒÐ½ÐµÑите другу"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr ""
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr ""
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Појединачно одабрани"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Цео форум (ознака филтрирана)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "У реду, хајде да покушамо!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "молимо Ð’Ð°Ñ Ð±ÐµÐ· askbot е-поште, хвала"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "онама/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "чпп/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "приватноÑÑ‚/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "одговори/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "уреди/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "ревизије/"
-#: 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: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/"
msgstr "питања/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "питај/"
-#: urls.py:88
+#: urls.py:92
#, fuzzy
msgid "retag/"
msgstr "ознаке/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "затвори/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "отворипоново/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "одговор/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "глаÑај/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "ознаке/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "кориÑници/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "питања"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "беџеви/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "поруке/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "означипрочитано/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "upload/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "ÑугеÑтија/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "питање/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
#, fuzzy
msgid "account/"
msgstr "онама/"
-#: conf/badges.py:12
+#: 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 ""
+
+#: conf/badges.py:13
#, fuzzy
msgid "Badge settings"
msgstr "реÑетујте ознаке"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr ""
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr ""
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr ""
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "омиљена питања"
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr ""
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr "Добродошли на П&О форум"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Затвори питање"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "питање је одговорено, прави одговор је прихваћен"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "погледајте питања без одговора"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "погледајте питања без одговора"
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
#, fuzzy
msgid "Allow only one account per email address"
msgstr "Your email <i>(never shared)</i>"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -664,61 +708,61 @@ 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:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -726,11 +770,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -738,135 +782,135 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "Change your password"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -874,226 +918,225 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Одговорите на питање"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "ажуриране ознаке"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Ознаке"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "питања без одговора"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "реÑетујте ознаке"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "назад на почетну Ñтрану"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1101,43 +1144,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1146,11 +1189,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1160,173 +1203,173 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
#, fuzzy
msgid "Upvote"
msgstr "upvoted"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
#, fuzzy
msgid "Downvote"
msgstr "downvoted"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Одговорите на ваше питање"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "измењен одговор"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
#, fuzzy
msgid "Flag offensive"
msgstr "означи увредљивим"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
#, fuzzy
msgid "Leave comments"
msgstr "унеÑите коментар"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
#, fuzzy
msgid "Delete questions and answers posted by others"
msgstr "питање је одговорено, прави одговор је прихваћен"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
#, fuzzy
msgid "Upload files"
msgstr "upfiles/"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
#, fuzzy
msgid "Close own questions"
msgstr "Затвори питање"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
#, fuzzy
msgid "Reopen own questions"
msgstr "Поново отворите ово питање"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
#, fuzzy
msgid "Edit community wiki posts"
msgstr "вики"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
#, fuzzy
msgid "View offensive flags"
msgstr "означено увредљивим"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
#, fuzzy
msgid "Close questions asked by others"
msgstr "Затвори питање"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
#, fuzzy
msgid "Gain for accepting best answer"
msgstr "означен најбољи одговор"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1334,44 +1377,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1379,51 +1422,52 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "кориÑнички профил"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Ознаке"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "Слична питања"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "наÑлов"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1431,52 +1475,52 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
#, fuzzy
msgid "Site title for the Q&A forum"
msgstr "Поздрав од П&О форума"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1589,33 +1633,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1623,41 +1667,41 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
#, fuzzy
msgid "Select skin"
msgstr "изаберите ревизију"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1669,11 +1713,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1682,21 +1726,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1705,21 +1749,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1728,19 +1772,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1751,65 +1795,85 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Поново отворите ово питање"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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:12
#, fuzzy
msgid "User settings"
msgstr ""
@@ -1817,70 +1881,76 @@ msgstr ""
"user sessions. Cookies must be enabled in your browser so that forum can "
"work for you."
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Your email <i>(never shared)</i>"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "дупликат питање"
@@ -1984,198 +2054,203 @@ msgstr "Питања на која Ñте одговорили"
msgid "Question has no accepted answers"
msgstr "Питања на која Ñте одговорили"
-#: const/__init__.py:121
+#: const/__init__.py:122
#, fuzzy
msgid "asked a question"
msgstr "поÑтавите питање"
-#: const/__init__.py:122
+#: const/__init__.py:123
#, fuzzy
msgid "answered a question"
msgstr "неодговорена"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "коментариÑано питање"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "коментариÑан одговор"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "измењено питање"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "измењен одговор"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "примљен беџ"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "означен најбољи одговор"
-#: const/__init__.py:129
+#: const/__init__.py:130
#, fuzzy
msgid "upvoted"
msgstr "upvoted"
-#: const/__init__.py:130
+#: const/__init__.py:131
#, fuzzy
msgid "downvoted"
msgstr "downvoted"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "глаÑање је отказано"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "обриÑано питање"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "обриÑан одговор"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "означено увредљивим"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "ажуриране ознаке"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "ажурирање је поÑлато на кориÑникову е-пошту"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "погледајте питања без одговора"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "означен најбољи одговор"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "одговорено питање"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "коментариÑано питање"
-#: const/__init__.py:196
+#: const/__init__.py:201
#, fuzzy
msgid "answer_commented"
msgstr "одговор коментариÑао"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "прихваћен одговор"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[затворено]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[обриÑано]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "почетна верзија"
-#: const/__init__.py:204
+#: const/__init__.py:209
#, fuzzy
msgid "retagged"
msgstr "ретаговано"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "занемари игнориÑане ознаке"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "Појединачно одабрани"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "дневно"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "недељно"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr ""
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "јуче"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "Како да промените Ñвоју Ñлику (gravatar) и шта је gravatar?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "злато"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "Ñребро"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "бронза"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2312,7 +2387,7 @@ 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:203
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
msgid "signin/"
msgstr "пријава/"
@@ -2446,75 +2521,75 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s није иÑправан"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "Ваша шифра је измењена"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr "унета шифра не одговара, покушајте поново"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2523,103 +2598,32 @@ msgstr ""
msgid "Site"
msgstr "наÑлов"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "дозвољени типови датотека Ñу '%(file_types)s'"
-#: 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
-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
-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] ""
-
-#: 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/group_settings.html:68
-msgid "Setting groups"
-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 "ЧеÑтитамо, Ñада Ñте админиÑтратор"
@@ -2647,15 +2651,15 @@ 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>"
+"<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>"
+"<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
@@ -2664,6 +2668,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "Будите први који ћете дати одговор на ово питање!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "кликните да биÑте видели најÑтарија питања"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2715,8 +2734,8 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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 "
@@ -2724,7 +2743,7 @@ msgstr ""
"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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"
@@ -2732,55 +2751,66 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "User login"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:347
+#: models/__init__.py:353
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, 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"
msgstr ""
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
-#: models/__init__.py:414
+#: models/__init__.py:428
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2788,7 +2818,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:415
+#: models/__init__.py:429
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2796,13 +2826,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:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
msgstr "нажалоÑÑ‚, Ñлање датотека на Ñервер захтева да имате карму >%(min_rep)s"
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
#, fuzzy
msgid "blocked users cannot post"
msgstr ""
@@ -2810,7 +2840,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
#, fuzzy
msgid "suspended users cannot post"
msgstr ""
@@ -2818,7 +2848,7 @@ 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:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2830,56 +2860,56 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2890,61 +2920,61 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
#, fuzzy
msgid "blocked users cannot flag posts"
msgstr ""
@@ -2952,7 +2982,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:749
+#: models/__init__.py:763
#, fuzzy
msgid "suspended users cannot flag posts"
msgstr ""
@@ -2960,70 +2990,70 @@ 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:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
#, fuzzy
msgid "cannot revoke old vote"
msgstr "глаÑање је отказано"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
@@ -3031,7 +3061,7 @@ msgstr[0] "пре %(hr)d Ñат"
msgstr[1] "пре %(hr)d Ñати"
msgstr[2] ""
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
@@ -3039,7 +3069,7 @@ msgstr[0] "пре %(min)d минут"
msgstr[1] "пре %(min)d минута"
msgstr[2] ""
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
@@ -3047,55 +3077,56 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
#, fuzzy
msgid "Registered User"
msgstr "РегиÑтровани кориÑник"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
@@ -3103,7 +3134,7 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3117,7 +3148,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:1743
+#: models/__init__.py:1757
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3131,49 +3162,38 @@ msgstr[2] ""
"If you are an active participant in this community, you will be recognized "
"with this badge."
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "Ознаке"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "овај одговор је изабран као иÑправан"
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3443,53 +3463,64 @@ msgstr ""
msgid "Very active in one tag"
msgstr ""
-#: models/meta.py:112
+#: 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
+#, fuzzy
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "овај одговор је изабран као иÑправан"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "Сазнајте више"
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr ""
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr ""
@@ -3502,8 +3533,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3557,6 +3588,81 @@ msgstr ""
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 ""
+
+#: 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
+#, 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
+msgid ""
+"Sincerely,\n"
+"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"
+"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
+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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "без"
@@ -3742,19 +3848,19 @@ msgstr ""
msgid "Please sign in to vote"
msgstr "Ñа најмање глаÑова"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "П&О форум ÑугеÑтије"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Хвала на ÑугеÑтији!"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:131
+#: views/readers.py:151
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
@@ -3762,7 +3868,7 @@ msgstr[0] "Једно питање"
msgstr[1] "%(q_num)s питања"
msgstr[2] ""
-#: views/readers.py:139
+#: views/readers.py:159
#, fuzzy, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
@@ -3770,7 +3876,7 @@ msgstr[0] "Једно питање"
msgstr[1] "%(q_num)s питања"
msgstr[2] ""
-#: views/readers.py:177
+#: views/readers.py:199
#, python-format
msgid "%(badge_count)d %(badge_level)s badge"
msgid_plural "%(badge_count)d %(badge_level)s badges"
@@ -3778,107 +3884,83 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: views/readers.py:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "глаÑај/"
-msgstr[1] "глаÑај/"
-msgstr[2] "глаÑај/"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "одговор"
-msgstr[1] "одговор"
-msgstr[2] "одговор"
-
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "преглед"
-msgstr[1] "преглед"
-msgstr[2] "преглед"
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:224
+#: views/users.py:211
#, fuzzy
msgid "moderate this user"
msgstr "Модеришите овог кориÑника"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "moderate-user/"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "кориÑнички профил"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "преглед кориÑниковог профила"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "недавне активноÑти кориÑника"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "профил - недавне активноÑти"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr ""
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "профил - одговори"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr ""
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "профил - глаÑови"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "кориÑникова карма"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "профил - кориÑникова карма"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "омиљена питања кориÑника"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "профил - омиљена питања"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "промене Ñу Ñачуване"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr ""
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr ""
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "профил - претплата е-поштом"
@@ -3944,6 +4026,409 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#, fuzzy
+#~ msgid "Sites"
+#~ msgstr "наÑлов"
+
+#, fuzzy
+#~ msgid "Documentation"
+#~ msgstr "Локација"
+
+#~ msgid "Change password"
+#~ msgstr "Промени шифру"
+
+#, fuzzy
+#~ msgid "Log out"
+#~ msgstr "одјава"
+
+#, fuzzy
+#~ msgid "Edit Group Settings"
+#~ msgstr "Измени питање"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
+
+#, fuzzy
+#~ msgid "Sign in"
+#~ msgstr "пријава/"
+
+#~ msgid "Change email"
+#~ msgstr "Change Email"
+
+#, fuzzy
+#~ msgid "Save your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
+
+#~ 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>)"
+
+#, 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 "Е-пошта је промењена."
+
+#~ 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."
+
+#, 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.</"
+#~ "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."
+
+#, 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 "
+#~ "%(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>"
+
+#, fuzzy
+#~ msgid "This account already exists, please use another."
+#~ msgstr "ова е-пошта је већ региÑтрована, молимо Ð’Ð°Ñ ÑƒÐ½ÐµÑите другу"
+
+#~ 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."
+
+#, fuzzy
+#~ msgid "please select one of the options above"
+#~ 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"
+#~ " "
+#~ 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?"
+
+#~ 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 "Find out more"
+#~ msgstr "Сазнајте више"
+
+#, fuzzy
+#~ 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 "
+#~ "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."
+
+#, fuzzy
+#~ 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 "означи овај одговор као омиљени (кликните поново да биÑте отказали)"
+
+#, 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 "ÐажалоÑÑ‚, Ñтраница коју Ñте тражили није пронађена."
@@ -3956,6 +4441,22 @@ 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 "Измените одговор"
@@ -3971,12 +4472,29 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "Сачувајте промену"
-#~ msgid "Cancel"
-#~ 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 "
@@ -3985,8 +4503,8 @@ 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"
+#~ "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 "
@@ -4020,6 +4538,10 @@ msgstr ""
#~ msgid "Reasons"
#~ msgstr "Разлози"
+#, fuzzy
+#~ msgid "OK to close"
+#~ msgstr "датум затварања"
+
#~ msgid "Frequently Asked Questions "
#~ msgstr "ЧеÑто поÑтављана питања"
@@ -4033,6 +4555,10 @@ msgstr ""
#~ 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 "
@@ -4043,6 +4569,10 @@ 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."
@@ -4061,14 +4591,38 @@ 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 "измењен одговор"
@@ -4100,6 +4654,10 @@ msgstr ""
#~ 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!"
@@ -4108,8 +4666,20 @@ msgstr ""
#~ "our community better!"
#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "унеÑите валидну е-пошту"
+#~ 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>"
@@ -4122,24 +4692,18 @@ msgstr ""
#~ msgstr "Поново отворите ово питање"
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "беџеви"
-
-#~ msgid "previous"
-#~ msgstr "претходна"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "Ñтрана %(num)s"
-
-#~ msgid "next page"
-#~ msgstr "Ñледећа Ñтранa"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
-#~ msgid "posts per page"
-#~ msgstr "поÑтова по Ñтрани"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "кориÑнички профил"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "не Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "не Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4151,213 +4715,77 @@ msgstr ""
#~ msgid "asked"
#~ msgstr "питано"
-#~ msgid "delete this comment"
-#~ msgstr "избриши овај коментар"
-
-#~ msgid "add comment"
-#~ msgstr "унеÑите коментар"
-
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "ово поље је обавезно"
-
-#~ msgid "(required)"
-#~ msgstr "(обавезно)"
+#~ msgid "answered"
+#~ msgstr "неодговорена"
#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "Одаберете кориÑничко име"
-
-#, fuzzy
-#~ msgid "no new responses yet"
-#~ msgstr "одговори"
+#~ msgid "updated"
+#~ msgstr "Ðжурирајте"
#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "Први означени поÑÑ‚"
+#~ msgid "see questions tagged '%(tag)s'"
+#~ msgstr "Затвори питање"
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "Први означени поÑÑ‚"
+#~ msgid "delete this comment"
+#~ msgstr "избриши овај коментар"
-#~ msgid "Questions"
-#~ msgstr "Питања"
+#~ msgid "add comment"
+#~ msgstr "унеÑите коментар"
#, fuzzy
-#~ msgid "retag"
-#~ msgstr "ретаговано"
-
-#~ msgid "close"
-#~ msgstr "затвори"
-
-#~ msgid "flag offensive"
-#~ msgstr "означи увредљивим"
-
-#~ msgid "undelete"
-#~ msgstr "undelete"
-
-#~ msgid "delete"
-#~ msgstr "избриши"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "кориÑнички профил"
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "датум затварања %(closed_at)s"
+#~ msgid "previous"
+#~ msgstr "претходна"
#, 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)"
-
-#~ msgid "oldest answers"
-#~ msgstr "Ñтара"
-
-#~ msgid "newest answers"
-#~ msgstr "нова"
-
-#~ msgid "popular answers"
-#~ msgstr "популарна"
-
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "не Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "означи овај одговор као омиљени (кликните поново да биÑте отказали)"
+#~ msgid "current page"
+#~ msgstr "Ñледећа Ñтранa"
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "аутор питања је изабрао овај одговор као прави"
+#~ msgid "page number %(num)s"
+#~ msgstr "Ñтрана %(num)s"
-#~ msgid "answer permanent link"
-#~ msgstr "трајни линк одговора"
+#~ msgid "next page"
+#~ msgstr "Ñледећа Ñтранa"
-#~ msgid "permanent link"
-#~ msgstr "трајни линк"
+#~ msgid "posts per page"
+#~ msgstr "поÑтова по Ñтрани"
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Одговорите на питање"
+#~ msgid "responses for %(username)s"
+#~ msgstr "Одаберете кориÑничко име"
#, fuzzy
-#~ msgid " or"
-#~ 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"
+#~ msgid "you have a new response"
+#~ msgid_plural "you have %(response_count)s new responses"
+#~ msgstr[0] "одговори"
+#~ msgstr[1] "одговори"
+#~ msgstr[2] "одговори"
#, 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 ""
-#~ "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 "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 "no new responses yet"
+#~ 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</"
-#~ "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 "Answer Your Own Question"
-#~ msgstr "Одговорите на ваше питање"
-
-#~ msgid "Answer the question"
-#~ msgstr "Одговорите на питање"
+#~ msgid "%(new)s new flagged posts and %(seen)s previous"
+#~ msgstr "Први означени поÑÑ‚"
#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Ознаке"
+#~ msgid "%(new)s new flagged posts"
+#~ msgstr "Први означени поÑÑ‚"
#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "questions with most answers"
+#~ msgid "%(seen)s flagged posts"
+#~ msgstr "Први означени поÑÑ‚"
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "questions with most answers"
+#~ msgid "Questions"
+#~ msgstr "Питања"
#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "Задњи пут ажурирано"
-
-#~ msgid "Question tags"
-#~ msgstr "Ознаке"
-
-#~ msgid "question asked"
-#~ msgstr "Питано"
-
-#~ msgid "question was seen"
-#~ msgstr "Прегледано"
-
-#~ msgid "times"
-#~ msgstr "пута"
-
-#~ msgid "last updated"
-#~ msgstr "Задњи пут ажурирано"
-
-#~ msgid "Related questions"
-#~ msgstr "Слична питања"
+#~ msgid "Privacy policy"
+#~ msgstr "политика приватноÑти"
#~ msgid "Edit question"
#~ msgstr "Измени питање"
@@ -4373,6 +4801,10 @@ msgstr ""
#~ msgstr "до 5 ознака, мање од 20 карактера у Ñвакој"
#, fuzzy
+#~ msgid "Reopen question"
+#~ msgstr "Поново отворите ово питање"
+
+#, fuzzy
#~ msgid "Title"
#~ msgstr "наÑлов"
@@ -4391,6 +4823,10 @@ msgstr ""
#~ msgstr "Преглед ревизија"
#, fuzzy
+#~ msgid "click to hide/show revision"
+#~ msgstr "questions with most answers"
+
+#, fuzzy
#~ msgid "revision %(number)s"
#~ msgstr "ревизије/"
@@ -4401,6 +4837,10 @@ msgstr ""
#~ msgid "Tag list"
#~ msgstr "СпиÑак ознака"
+#, fuzzy
+#~ msgid "Sort by &raquo;"
+#~ msgstr "Сортирај:"
+
#~ msgid "sorted alphabetically"
#~ msgstr "Ñортирано по алфабету"
@@ -4428,309 +4868,50 @@ msgstr ""
#~ msgid "Nothing found."
#~ msgstr "Ðишта није пронађено."
-#~ msgid "Change email"
-#~ msgstr "Change Email"
-
-#~ 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 "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."
-
-#, 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 %"
-#~ "(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 "Username:"
-#~ msgstr "КориÑничко име:"
-
-#~ msgid "Password:"
-#~ msgstr "Шифра:"
-
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr ""
-#~ "Sincerely,\n"
-#~ "Q&A Forum Administrator"
-
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Поздрав од П&О форума"
-
-#, fuzzy
-#~ msgid "Sign in"
-#~ 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"
-#~ " "
-#~ 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 ВаÑ, поново откуцајте шифру"
+#~ msgid "Search tips:"
+#~ msgstr "Савети за претраживање:"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "поÑледњи пут виђен"
+#~ msgid "reset author"
+#~ msgstr "реÑетујте аутора"
#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Ðалог је избриÑан."
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "Зашто кориÑтити OpenID?"
-
-#~ 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 "Find out more"
-#~ msgstr "Сазнајте више"
+#~ msgid " or "
+#~ msgstr "или"
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
+#~ msgid "reset tags"
+#~ 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."
+#~ msgid "start over"
+#~ msgstr "крените изпочетка"
-#~ msgid "or"
-#~ msgstr "или"
+#~ msgid "Search tip:"
+#~ msgstr "Савет за претраживање:"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Како да промените Ñвоју Ñлику (gravatar) и шта је gravatar?"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "додајте ознаке и упит да Ñузите претрагу"
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Промените ознаке"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "погледајте питања без одговора"
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "промене Ñу Ñачуване"
+#~ msgid "No questions here. "
+#~ msgstr "Овде нема омиљених питања."
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
+#~ msgid "resetting author"
+#~ msgstr "реÑетујте аутора"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "обриÑан одговор"
+#~ msgid "resetting tags"
+#~ msgstr "реÑетујте ознаке"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "обриÑан одговор"
-
-#~ msgid "answer tips"
-#~ msgstr "Савети"
-
-#~ msgid "be clear and concise"
-#~ msgstr "будите јаÑни и кратки"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "погледајте чеÑто поÑтављана питања"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown оÑнове"
+#~ msgid "starting over"
+#~ msgstr "крените изпочетка"
#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*укошено* или _укошено_"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**подебљано** или __подебљано__"
-
-#~ msgid "link"
-#~ msgstr "линк"
-
-#~ msgid "text"
-#~ msgstr "текÑÑ‚"
-
-#~ msgid "image"
-#~ msgstr "Ñлика"
-
-#~ msgid "login to post question info"
+#~ 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 "
@@ -4739,25 +4920,15 @@ msgstr ""
#~ "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"
-#~ " "
-#~ 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 "Login/signup to post your question"
-#~ msgstr "Login/Signup to Post"
-
-#~ msgid "Ask your question"
+#~ 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 карактера"
@@ -4777,103 +4948,156 @@ msgstr ""
#~ "each"
#~ msgstr "до 5 ознака, мање од 20 карактера у Ñвакој"
-#~ msgid "about"
-#~ msgstr "о нама"
-
-#~ msgid "privacy policy"
-#~ msgstr "политика приватноÑти"
-
-#~ msgid "give feedback"
-#~ msgstr "ÑугеÑтије и žалбе"
+#, 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)"
-#~ msgid "back to home page"
-#~ msgstr "назад на почетну Ñтрану"
+#, fuzzy
+#~ msgid "oldest answers will be shown first"
+#~ msgstr " "
-#~ msgid "questions"
-#~ msgstr "питања"
+#~ msgid "oldest answers"
+#~ msgstr "Ñтара"
-#~ msgid "users"
-#~ msgstr "кориÑници"
+#, fuzzy
+#~ msgid "newest answers will be shown first"
+#~ msgstr " "
-#~ msgid "badges"
-#~ msgstr "беџеви"
+#~ msgid "newest answers"
+#~ msgstr "нова"
-#~ msgid "ask a question"
-#~ msgstr "поÑтавите питање"
+#, fuzzy
+#~ msgid "most voted answers will be shown first"
+#~ msgstr " "
-#~ msgid "logout"
-#~ msgstr "одјава"
+#~ msgid "popular answers"
+#~ msgstr "популарна"
-#~ msgid "login"
-#~ msgstr "пријава"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Одговорите на ваше питање"
#, fuzzy
-#~ msgid "settings"
-#~ msgstr "реÑетујте ознаке"
-
-#~ msgid "question tips"
-#~ msgstr "Савети"
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Login/Signup to Post"
-#~ msgid "please ask a relevant question"
-#~ msgstr "ask a question interesting to this community"
+#~ msgid "Your answer"
+#~ msgstr "Ваш одговор"
-#~ msgid "please try provide enough details"
-#~ msgstr "provide enough details"
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Будите први који ћете дати одговор на ово питање!"
-#~ msgid "Interesting tags"
-#~ 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 "Add"
-#~ msgstr "Додајте"
+#~ 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 "Ignored tags"
-#~ 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 "Search tips:"
-#~ msgstr "Савети за претраживање:"
+#, fuzzy
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Login/Signup to Post"
-#~ msgid "reset author"
-#~ msgstr "реÑетујте аутора"
+#~ msgid "Answer the question"
+#~ msgstr "Одговорите на питање"
#, fuzzy
-#~ msgid " or "
+#~ msgid " or"
#~ msgstr "или"
-#~ msgid "reset tags"
-#~ msgstr "реÑетујте ознаке"
-
-#~ msgid "start over"
-#~ msgstr "крените изпочетка"
+#, fuzzy
+#~ msgid "email"
+#~ msgstr "е-пошта/"
-#~ msgid "Search tip:"
-#~ msgstr "Савет за претраживање:"
+#, fuzzy
+#~ msgid "Question tools"
+#~ msgstr "Ознаке"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "додајте ознаке и упит да Ñузите претрагу"
+#, fuzzy
+#~ msgid "click to unfollow this question"
+#~ msgstr "questions with most answers"
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Овде нема омиљених питања."
+#~ msgid "click to follow this question"
+#~ msgstr "questions with most answers"
#, fuzzy
-#~ msgid "Contributors"
-#~ msgstr "Сарадници"
+#~ msgid "email the updates"
+#~ msgstr "Задњи пут ажурирано"
-#~ msgid "Related tags"
-#~ msgstr "Ознаке"
+#~ msgid "question asked"
+#~ msgstr "Питано"
-#~ msgid "In:"
-#~ msgstr "Прикажи:"
+#~ msgid "question was seen"
+#~ msgstr "Прегледано"
-#~ msgid "see unanswered questions"
-#~ 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 "see your followed questions"
-#~ msgstr "погледајте Ваша омиљена питања"
+#~ 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 "Sort by:"
-#~ msgstr "Сортирај:"
+#~ 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 "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"
@@ -4901,6 +5125,15 @@ msgstr ""
#~ 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> "
@@ -4921,6 +5154,10 @@ msgstr ""
#~ msgstr "питања"
#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr "кориÑтите %(tag_count)d ознаку или мање"
+
+#, fuzzy
#~ msgid "select:"
#~ msgstr "избриши"
@@ -4947,6 +5184,10 @@ msgstr ""
#~ msgid "update profile"
#~ msgstr "ажурирајте профил"
+#, fuzzy
+#~ msgid "manage login methods"
+#~ msgstr "User login"
+
#~ msgid "real name"
#~ msgstr "право име"
@@ -4979,6 +5220,14 @@ msgstr ""
#~ msgstr "Локација"
#, fuzzy
+#~ msgid "%(username)s's current status is \"%(status)s\""
+#~ msgstr "кориÑнички профил"
+
+#, fuzzy
+#~ msgid "User status changed"
+#~ msgstr "кориÑникова карма"
+
+#, fuzzy
#~ msgid "Save"
#~ msgstr "Сачувајте промену"
@@ -4986,6 +5235,13 @@ msgstr ""
#~ msgid "User reputation changed"
#~ msgstr "кориÑникова карма"
+#~ msgid "Add"
+#~ msgstr "Додајте"
+
+#, fuzzy
+#~ msgid "Send message to %(username)s"
+#~ msgstr "Одаберете кориÑничко име"
+
#, fuzzy
#~ msgid "Message sent"
#~ msgstr "поруке/"
@@ -5012,9 +5268,17 @@ 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 "овај одговор је изабран као иÑправан"
@@ -5028,6 +5292,10 @@ msgstr ""
#~ msgid "Answer to:"
#~ msgstr "Савети"
+#, fuzzy
+#~ msgid "User profile"
+#~ msgstr "кориÑнички профил"
+
#~ msgid "graph of user reputation"
#~ msgstr "Graph of user karma"
@@ -5044,6 +5312,221 @@ 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"
+#~ " "
+#~ 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 "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"
+
+#, fuzzy
+#~ msgid "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "преглед"
+#~ msgstr[1] "преглед"
+#~ msgstr[2] "преглед"
+
+#, fuzzy
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "одговор"
+#~ msgstr[1] "одговор"
+#~ msgstr[2] "одговор"
+
+#, fuzzy
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "глаÑај/"
+#~ msgstr[1] "глаÑај/"
+#~ msgstr[2] "глаÑај/"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "погледајте питања без одговора"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "погледајте Ваша омиљена питања"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "беџеви"
+
+#~ msgid "logout"
+#~ msgstr "одјава"
+
+#~ msgid "login"
+#~ msgstr "пријава"
+
+#, fuzzy
+#~ msgid "settings"
+#~ msgstr "реÑетујте ознаке"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "унеÑите валидну е-пошту"
+
+#, fuzzy
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
+
+#, fuzzy
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "не Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
+
+#, 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)"
+
+#~ msgid "mark this answer as favorite (click again to undo)"
+#~ msgstr "означи овај одговор као омиљени (кликните поново да биÑте отказали)"
+
+#~ msgid "Question tags"
+#~ msgstr "Ознаке"
+
+#~ msgid "questions"
+#~ msgstr "питања"
+
+#, fuzzy
+#~ msgid "search"
+#~ msgstr "претрага/"
+
+#~ msgid "In:"
+#~ msgstr "Прикажи:"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "Сва питања"
+
+#~ msgid "Sort by:"
+#~ msgstr "Сортирај:"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "Е-пошта:"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "наÑлов"
+
#~ msgid "community wiki"
#~ msgstr "вики"
@@ -5065,9 +5548,6 @@ msgstr ""
#~ msgid "unmark-tag/"
#~ msgstr "unmark-tag/"
-#~ msgid "search/"
-#~ msgstr "претрага/"
-
#, fuzzy
#~ msgid "Askbot"
#~ msgstr "O нама"
@@ -5154,9 +5634,6 @@ msgstr ""
#~ "<br>You can submit your question now and validate email after that. Your "
#~ "question will saved as pending meanwhile. "
-#~ msgid "how to validate email title"
-#~ msgstr "Како да потврдите е-пошту и зашто?"
-
#~ msgid ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
@@ -5387,9 +5864,6 @@ msgstr ""
#~ msgid "confirm/"
#~ msgstr "потврди/"
-#~ msgid "email/"
-#~ msgstr "е-пошта/"
-
#~ msgid "validate/"
#~ msgstr "validate/"
@@ -5424,9 +5898,6 @@ msgstr ""
#~ msgid "The OpenID %s isn't associated to current user logged in"
#~ msgstr "%s OpenID није повезан Ñа тренутно пријављеним кориÑником."
-#~ msgid "Email Changed."
-#~ msgstr "Е-пошта је промењена."
-
#~ msgid "This OpenID is already associated with another account."
#~ msgstr "Овај OpenID је већ повезан Ñа другим налогом."
@@ -5481,9 +5952,6 @@ msgstr ""
#~ msgid "Change email "
#~ msgstr "Промени е-пошту"
-#~ msgid "Change OpenID"
-#~ msgstr "Промени OpenID"
-
#~ msgid "books"
#~ msgstr "књиге"
@@ -5545,9 +6013,6 @@ msgstr ""
#~ msgstr[1] "%(q_num)s питања"
#~ msgstr[2] ""
-#~ msgid "date closed"
-#~ msgstr "датум затварања"
-
#~ msgid ""
#~ "This is where you can change your password. Make sure you remember it!"
#~ msgstr ""
@@ -5630,15 +6095,6 @@ msgstr ""
#~ "\"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"
-#~ msgstr ""
-#~ "<span class='big strong'>Enter your Askbot login and password</span><br/"
-#~ "><span class='grey'>(or select your OpenID provider above)</span>"
-
-#, fuzzy
-#~ msgid "Create account"
-#~ msgstr "Отворите налог"
-
#~ msgid "Email Validation"
#~ msgstr "Валидација е-поште"
@@ -5710,9 +6166,6 @@ msgstr ""
#~ msgid "Questions sorted by <strong>number of responses</strong>."
#~ msgstr "Questions sorted by the <strong>number of answers</strong>."
-#~ msgid "Most answered questions are shown first."
-#~ msgstr " "
-
#~ msgid "avatar, see %(gravatar_faq_url)s"
#~ msgstr "<a href='%(gravatar_faq_url)s'>gravatar</a>"
diff --git a/askbot/locale/sr/LC_MESSAGES/djangojs.mo b/askbot/locale/sr/LC_MESSAGES/djangojs.mo
index 2c8ecbcf..be890246 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 91b621d4..3929c9ea 100644
--- a/askbot/locale/sr/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/sr/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-10-08 02:31-0500\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"
@@ -18,49 +18,326 @@ msgstr ""
"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
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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 5e511994..75db0a03 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 1c7dc059..bd951210 100644
--- a/askbot/locale/tr/LC_MESSAGES/django.po
+++ b/askbot/locale/tr/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\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"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"X-Translated-Using: django-rosetta 0.5.6\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
@@ -136,20 +136,20 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
#, fuzzy
msgid "suspended"
msgstr "güncellendi"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -158,7 +158,7 @@ msgstr ""
msgid "administrator"
msgstr "Saygılarımızla, <BR> Site yönetimi"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
#, fuzzy
msgid "moderator"
msgstr "yoneticiler/"
@@ -208,489 +208,534 @@ msgid "Message text"
msgstr "Mesajınız:"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "Adınız:"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "E-mail (kimse görmeyecektir):"
+#, fuzzy
+msgid "Email:"
+msgstr "E-mail"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "Mesajınız:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "anonim"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: 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:863
+#: forms.py:893
msgid "Real name"
msgstr "Gerçek isim"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "Website"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "DoÄŸum tarihi"
-#: forms.py:892
+#: forms.py:922
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:898
+#: forms.py:928
msgid "Profile"
msgstr "Profil"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "Görünen isim"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
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:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "E-mail etiketi için filtre seç"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "Tarafımdan sorulan"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "Tarafımdan cevaplanan"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "Tek tek seçilmiş"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "Tüm forum (etiket ile filtrelenmiş)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "Benim hakkımdaki gönderiler"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "tamam, bir deneyelim!"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "toplu e-mail istemiyorum, teşekkürler"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "lütfen yukarıdaki seçeneklerden birini seçin "
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "hakkimizda/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "sss/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "gizlilik/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "cevaplar/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "duzenle/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "duzeltmeler/"
-#: 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: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/"
msgstr "sorular/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "sor/"
-#: urls.py:88
+#: urls.py:92
#, fuzzy
msgid "retag/"
msgstr "etiketler/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "kapat/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "yenidenac/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "cevap/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "oy/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "etiketler/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "kullanicilar/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "e-mail abonelikleri"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "rozetler/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "mesajlar/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "okundu-yap/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "yukle/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "geribildirim/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "soru/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "hesap/"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control settings"
+msgstr "Temel Ayarlar"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
#, fuzzy
msgid "Badge settings"
msgstr "Temel Ayarlar"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
#, fuzzy
msgid "Popular Question: minimum views"
msgstr "Popüler Soru"
-#: conf/badges.py:111
+#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
msgstr "Önemli Soru "
-#: conf/badges.py:120
+#: conf/badges.py:122
#, fuzzy
msgid "Famous Question: minimum views"
msgstr "Ünlü soru"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "Favori Soru"
-#: conf/badges.py:201
+#: conf/badges.py:203
#, fuzzy
msgid "Stellar Question: minimum stars"
msgstr "Bomba soru"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "E-posta ve e-posta uyarı ayarları"
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr "Hoşgeldiniz mesajının konusu"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr "Bir e-posta bildirisindeki maksimum haber sayısı"
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "Varsayılan haber uyarı sıklığı"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Varsayılan haber uyarı sıklığı"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "Varsayılan haber uyarı sıklığı"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Harika! Cevapsız bir soru bile kalmamış..."
+
+#: 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "Harika! Cevapsız bir soru bile kalmamış..."
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr "Gönderiye izin vermeden önce e-posta doğrulaması iste"
-#: conf/email.py:187
+#: conf/email.py:219
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:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr "Bir e-posta adresi ile tek kullanıcıya izin ver"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr "Anonim kullanıcı için geçersiz e-posta adresi"
-#: conf/email.py:206
+#: conf/email.py:238
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:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr "soru bilgisi göndermek için giriş yapın"
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
-msgstr "Siteyi Facebook, vb. gibi servisler ile bağlamak için gerekli kodlar"
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Google site doğrulama anahtarı"
-#: conf/external_keys.py:20
+#: conf/external_keys.py:21
#, fuzzy, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
@@ -700,11 +745,11 @@ msgstr ""
"<a href=\"%(google_webmasters_tools_url)s\">google webmasters</a> adresinden "
"temin edin."
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Google Analytics anahtarı"
-#: conf/external_keys.py:37
+#: conf/external_keys.py:38
#, fuzzy, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
@@ -713,19 +758,19 @@ msgstr ""
"Sitenizi Google Analytics ile takip etmek istiyorsanız, anahtarınızı <a href="
"\"%(ga_site)s\">Google Analytics</a> 'ten temin edebilirsiniz"
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr "Recaptcha genel anahtarı"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr "Recaptcha gizli anahtarı"
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -736,11 +781,11 @@ msgstr ""
"servistir. Anahtarını <a href=\"http://recaptcha.net\">recaptcha.net</a> "
"adresinden temin edebilirsiniz"
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr "Facebook genel anahtarı"
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, fuzzy, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -752,80 +797,80 @@ msgstr ""
"developers/createapp.php\">facebook create app</a> adresinden temin "
"edebilirsiniz"
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr "Facbook gizli anahtarı"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "Hesabınız: Şifremi değiştir"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Flatpages - hakkında, gizlilik politikası, vb."
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr "Soru/Cevap forumu hakkındaki sayfa (html formatında)"
-#: 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."
@@ -833,12 +878,12 @@ msgstr ""
"Kaydedin ve <a href=\"http://validator.w3.org/\">HTML doğrulayıcı</a> "
"kullanarak \"hakkında\" sayfasını kontrol edin."
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr "Soru/Cevap forumu hakkındaki sayfa (html formatında)"
-#: conf/flatpages.py:33
+#: conf/flatpages.py:35
#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
@@ -847,12 +892,12 @@ msgstr ""
"Kaydedin ve <a href=\"http://validator.w3.org/\">HTML doğrulayıcı</a> "
"kullanarak \"hakkında\" sayfasını kontrol edin."
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
"Soru/Cevap forumu gizlilik politikası hakkındaki sayfa (html formatında)"
-#: 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."
@@ -860,37 +905,37 @@ msgstr ""
"Kaydedin ve <a href=\"http://validator.w3.org/\">HTML doğrulayıcı</a> "
"kullanarak \"gizlilik\" sayfasını kontrol edin."
-#: conf/forum_data_rules.py:11
+#: conf/forum_data_rules.py:12
#, fuzzy
-msgid "Data entry and display"
+msgid "Data entry and display rules"
msgstr "askbot veri girişi ve görüntüleme ayarları"
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr "topluluk wiki özelliğini aktif ediniz"
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -898,225 +943,224 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Cevabı yayınla"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "etiketin maksimum uzunluğu (karakter sayısı)"
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "güncellenmiş etiketler"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Ä°lgili etiketler"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr "soru başına maksimum etiket sayısı"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr "Soru listesinin varsayılan uzunluğu (soru sayısı)"
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr "\"Cevaplanmamış soru\" ne anlama gelmeli?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "Temel Ayarlar"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "anasayfaya geri dön"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1124,43 +1168,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1169,11 +1213,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1183,165 +1227,165 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "Bir eylemleri gerçekleştirmek için gerekli minimum itibar"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr "BeÄŸendim"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr "BeÄŸenmedim"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Kendi soruna cevap yaz!"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "herhangi bir cevabı değiştir"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "Uygunsuz olarak iÅŸaretle"
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr "Yorum ekle"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "Başkaları tarafından yapılan yorumları silebilme"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
#, fuzzy
msgid "Delete questions and answers posted by others"
msgstr "Başkaları tarafından sorulmuş soruları kapat"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr "Dosya yükle"
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr "Kendi sorunu kapat"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr "Başkaları tarafından sorulan soruların etiketini değiştirebilme"
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr "Soruyu yeniden aç"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr "Sitenin wiki sorularını değiştir"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr "Başkaları tarafından yazılanları değiştirebilme"
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr "Uygunsuz olarak işaretlenmiş olanları görüntüle"
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr "Başkaları tarafından sorulmuş soruları kapat"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "Gönderileri kilitle"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
+#: conf/reputation_changes.py:13
#, fuzzy
-msgid "Reputation loss and gain rules"
+msgid "Karma loss and gain rules"
msgstr "İtibar kaybetme ve kazanma kuralları"
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr "Kullanıcı başına maksimum günlük itibar kazanım limiti"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr "Bir olumlu oyun itibar getirisi"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr "Kabul edilen cevabın itibar getirisi"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr "En iyi cevap için kazanılan puan"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr "İptal edilen olumsuz oyun gönderi sahibine katkısı"
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr "Olumsuz oy iptalinin oy verene katkısı"
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr "Kabul edilen cevabın iptal edilmesinin oy verenden götürüsü"
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr "Reddedilen cevabın yazarından götürüsü"
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr "Olumsuz oy vermenin götürüsü"
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr "Saldırgan olarak işaretlenen gönderinin yazarından götürüsü"
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr "Olumsuz oylanan gönderinin yazarından götürüsü"
-#: 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 ""
"Aynı versiyonu 3 kere uygunsuz olarak işaretlenen gönderi sahibinin kaybı"
-#: 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 ""
"Aynı versiyonu 5 kere uygunsuz olarak işaretlenen gönderi sahibinin kaybı"
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr "Olumlu oyun iptal edilmesinin gönderi sahibinden götürüsü"
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1349,44 +1393,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1394,52 +1438,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "Kullanıcı profili"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Etiketleri"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "Ä°lgili sorular"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr "güncel olmayan soruları görmek için tıklayın"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "Siteler"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1447,53 +1492,53 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
-msgstr "Soru/Cevap sitesi parametreleri ve URL'leri"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr "Soru & Cevap sitesi için site başlığı"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr "Soru/Cevap sitesinin virgülle ayrılmış olarak anahtar kelimeleri"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr "Sayfa altlığında gösterilecek telif notu"
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr "Arama motorları için site tanımı"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr "Soru/Cevap forumunun kısa adı"
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
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:77
+#: conf/site_settings.py:79
#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr "Anonim kullanıcı için geçersiz e-posta adresi"
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
#, 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:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "Geri bildirim adresi"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
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"
@@ -1607,34 +1652,33 @@ msgstr "Kabul edilen için arkaplan rengi"
msgid "Foreground color for accepted answer"
msgstr "Kabul edilen cevap için önplan rengi"
-#: conf/skin_general_settings.py:14
-#, fuzzy
-msgid "Skin and User Interface settings"
-msgstr "Tema: genel ayarlar"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1642,40 +1686,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr "Tema seç"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1687,11 +1731,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1700,21 +1744,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1723,21 +1767,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1746,19 +1790,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1769,136 +1813,163 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr "Tema medya dosyaları versiyon numarası"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "Bu soruyu tekrar aç"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "External Services"
+msgstr "DiÄŸer Hizmetler"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr "Kullanıcı idare ayarları"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr "Kullanıcı adının değiştirilmesine izin ver"
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Bir e-posta adresi ile tek kullanıcıya izin ver"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr "Görünen isim için en az kelime uzunluğu"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
#, fuzzy
msgid "Name for the Anonymous user"
msgstr "Anonim kullanıcı için geçersiz e-posta adresi"
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
-msgstr "Oylama ve işaretlemeler için limitler"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr "Bir kullanıcının bir gün içinde yapabileceği oylama sayısı"
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr "Bir kullanıcının bir gün içinde yapabileceği bildirim sayısı"
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr "Kalan oy sayısı uyarısı vermek için eşik değeri"
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr "Oyların iptali edilebilmesi için gün sayısı"
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
#, fuzzy
msgid "Number of days required before answering own question"
msgstr "Oyların iptali edilebilmesi için gün sayısı"
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
"Gönderiyi otomatik olarak gizlemek için gerekli olumsuz bildirim sayısı"
-#: conf/vote_rules.py:76
+#: conf/vote_rules.py:78
msgid "Number of flags required to automatically delete posts"
msgstr "Gönderiyi otomatik olarak silmek için gerekli olumsuz bildirim sayısı"
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "yinelenen soru"
@@ -2000,192 +2071,197 @@ msgstr "Cevapsız soru"
msgid "Question has no accepted answers"
msgstr "Kabul edilmiş cevabı olmayan soru"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "bir soru sordu"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "bir soru cevapladı"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "soruya yorum yazıldı"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "cevaba yorum yazıldı"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "soru düzeltilmiş"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "cevap düzeltilmiş"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "alınan ödül"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "en iyi cevap olarak iÅŸaretlenmiÅŸ"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "beÄŸendim"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "beÄŸenmedim"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "oy iptal"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "silinmiÅŸ bir soru"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "silinmiÅŸ cevap"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "saldırgan olarak işaretlenmiş"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "güncellenmiş etiketler"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "favori olarak seçilmiş"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "tamamlanmış kullanıcı profili"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "kullanıcıya e-mail güncelleme gönder"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "cevapsız sorular gör"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "En iyi cevap için kazanılan puan"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "gönderide belirtilmiş"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "cevaplanmış_soru"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "yorumlanmış soru"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "yorumlanmış soru"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "kabul edilmiÅŸ soru"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[kapatıldı]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[silindi]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "ilk versiyon"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "yeniden etiketlendi"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "dışlanmış etiketleri dikkate al"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "Tek tek seçilmiş"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr "anında"
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "günlük"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "haftalık"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "e-mail yok"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "dün"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "Gravatar nedir?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "altın"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "gümüş"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "bronz"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2320,7 +2396,7 @@ msgid "Incorrect username."
msgstr "Hatalı kullanıcı adı."
#: 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:206
msgid "signin/"
msgstr "giriÅŸ/"
@@ -2454,73 +2530,73 @@ msgstr ""
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:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "Åžifreniz deÄŸiÅŸtirildi"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
#, 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:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "Hesabınıza yeni bir şifre verin."
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2528,98 +2604,32 @@ msgstr ""
msgid "Site"
msgstr "Site"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr "Temel Ayarlar"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr "Varsayılan değer: \"\""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr "Varsayılan değer:"
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr "Varsayılan değer: %s"
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "izin verilen dosya türleri '%(file_types)s'"
-#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
-msgid "Sites"
-msgstr "Siteler"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-msgid "Documentation"
-msgstr "Belgelendirme"
-
-#: deps/livesettings/templates/livesettings/group_settings.html:11
-#: deps/livesettings/templates/livesettings/site_settings.html:23
-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ış"
-
-#: 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 "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."
-
-#: deps/livesettings/templates/livesettings/group_settings.html:68
-msgid "Setting groups"
-msgstr "Ayar grupları"
-
-#: 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 "Group settings: %(name)s"
-msgstr "Grup ayarları: %(name)s"
-
-#: deps/livesettings/templates/livesettings/site_settings.html:93
-msgid "Uncollapse all"
-msgstr "Hepsini kapat"
-
#: importers/stackexchange/management/commands/load_stackexchange.py:141
msgid "Congratulations, you are now an Administrator"
msgstr "Tebrikler, artık sitemizde yönetici oldunuz..."
@@ -2647,15 +2657,15 @@ 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>"
+"<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>"
+"<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
@@ -2664,6 +2674,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, 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
+#, 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
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2723,8 +2748,8 @@ msgstr "Ölen linkleri önceden görme şansın olabilir. "
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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 "
@@ -2732,86 +2757,97 @@ msgstr ""
"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
msgstr[1] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "Kullanıcı girişi"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, 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:347
+#: models/__init__.py:353
+#, 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
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 ""
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "kendi yazılarınıza oy veremezsiniz"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, 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:399
+#: models/__init__.py:413
#, 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:414
+#: models/__init__.py:428
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr "Engellenen kullanıcılar ileti yapamaz"
-#: models/__init__.py:415
+#: models/__init__.py:429
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr "Dondurulan kullanıcılar ileti yapamaz"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, 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:436 models/__init__.py:503 models/__init__.py:918
+#: 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:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr "Dondurulan kullanıcılar ileti yapamaz"
-#: models/__init__.py:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2822,56 +2858,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2881,265 +2917,255 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
#, fuzzy
msgid "blocked users cannot flag posts"
msgstr "Engellenen kullanıcılar ileti yapamaz"
-#: models/__init__.py:749
+#: models/__init__.py:763
#, fuzzy
msgid "suspended users cannot flag posts"
msgstr "Dondurulan kullanıcılar ileti yapamaz"
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "verilen bir oyu iptal edemezsiniz"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "%(date)s tarihinde"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, 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:1333
+#: models/__init__.py:1347
#, 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:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "anonim"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr "Saygılarımızla, <BR> Site yönetimi"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
#, fuzzy
msgid "Suspended User"
msgstr "Gönderen"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
#, fuzzy
msgid "Registered User"
msgstr "Kayıtlı kullanıcı"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "karmanız %(reputation)s"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, 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:1743
+#: models/__init__.py:1757
#, 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:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "Etiketleri"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "bu soru favori olarak seçildi"
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3410,49 +3436,60 @@ msgstr "Uzman"
msgid "Very active in one tag"
msgstr "Bir etikette çok etkin"
-#: models/meta.py:112
+#: models/content.py:549
+#, fuzzy
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr "bu soru favori olarak seçildi"
+
+#: 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
+#, fuzzy
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "bu soru favori olarak seçildi"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "Daha fazla bilgi"
-#: models/question.py:452
-#, fuzzy
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "bu soru favori olarak seçildi"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s soruyu düzenledi"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s bir soruyu yorumladı"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
@@ -3460,7 +3497,7 @@ msgstr ""
" \n"
"%(people)s cevaba yorum yazdı"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s bir cevabı yorumladı"
@@ -3473,8 +3510,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3529,6 +3566,86 @@ msgstr "Haftalık"
msgid "No email"
msgstr "E-posta yok"
+#: 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
+msgid ""
+"Sincerely,\n"
+"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
+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 ""
+"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/default/templates/feedback_email.txt:2
+#: skins/old/templates/feedback_email.txt:2
+#, fuzzy, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"Merhaba, bu bir %(site_title)s geribildirim mesajıdır.\n"
+
+#: 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."
+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"
@@ -3713,140 +3830,119 @@ msgstr "Lütfen, giriş yapın veya askbot'a katılın"
msgid "Please sign in to vote"
msgstr "Lütfen buradan giriş yapın:"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "Sorucevap.de geribildirim"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "Görüşleriniz için teşekkür ederiz!"
-#: views/meta.py:92
+#: views/meta.py:94
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:131
+#: 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 soru"
msgstr[1] "%(q_num)s soru"
-#: views/readers.py:139
+#: 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:177
+#: 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:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "oy/"
-msgstr[1] "oy/"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "cevap"
-msgstr[1] "cevap"
-
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "izlenme"
-msgstr[1] "izlenme"
-
-#: views/readers.py:440
+#: views/readers.py:415
#, 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:224
+#: views/users.py:211
#, fuzzy
msgid "moderate this user"
msgstr "Bu kullanıcıyı yönet"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "yoneticiler/"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "kullanıcı profili"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "kullanıcı profiline genel bakış"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "son kullanıcı etkinliği"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "profil - son etkinlikler"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "diÄŸer sorulara cevaplar ve yorumlar"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "profil - cevapları"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "kullanıcı oy rekoru"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "profil - oy"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "toplulukta kullanıcının itibarı"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "profil - kullanıcı itibarı"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "kullanıcının favori soruları"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "profil - favori sorular"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "deÄŸiÅŸiklikler kaydedildi"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "E-mail güncellemeleri iptal edildi"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "E-mail abonelik ayarları"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "profil - e-mail abonelikleri"
@@ -3906,16 +4002,490 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#~ msgid "Sites"
+#~ msgstr "Siteler"
+
+#~ msgid "Documentation"
+#~ msgstr "Belgelendirme"
+
+#~ msgid "Change password"
+#~ msgstr "Åžifre deÄŸiÅŸtir"
+
+#~ msgid "Log out"
+#~ msgstr "Güvenli Çıkış"
+
+#~ msgid "Home"
+#~ msgstr "Anasayfa"
+
+#~ msgid "Edit Group Settings"
+#~ msgstr "Grup Ayarlarını Düzenle"
+
+#~ 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 "Settings included in %(name)s."
+#~ msgstr "%(name)s içerisinde yer alan ayarlar."
+
+#~ msgid "You don't have permission to edit values."
+#~ msgstr "Değerleri değiştirmek için yetkin yok."
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "Site Ayarlarını Düzenle"
+
+#~ msgid "Livesettings are disabled for this site."
+#~ msgstr "\"Livesettings\" bu site için devre dışı bırakılmıştır."
+
#~ 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"
+#~ "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"
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "Grup ayarları: %(name)s"
+
+#~ msgid "Uncollapse all"
+#~ msgstr "Hepsini kapat"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
+
+#, fuzzy
+#~ msgid "(or select another login method above)"
+#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+
+#, fuzzy
+#~ msgid "Sign in"
+#~ msgstr "giriÅŸ/"
+
+#~ msgid "Change email"
+#~ msgstr "E-mai deÄŸiÅŸtir"
+
+#~ msgid "Save your email address"
+#~ msgstr "E-mail adresinizi kaydedin"
+
+#~ msgid "change %(email)s info"
+#~ msgstr "bilgileri %(email)s deÄŸiÅŸtir"
+
+#, fuzzy
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
#~ msgstr ""
-#~ "Bu seçenek, aşağıdaki kategoriler için e-posta ile bildirilen "
-#~ "güncellemelerin sıklığını 5 kategoride belirler: kullanıcı tarafından "
-#~ "sorulan sorular, cevaplanan sorular, yıldızlanan sorular, tüm forum "
-#~ "(seçilen etiketler için) ve kullanıcı hakkındaki soru ve yorumlar"
+#~ "<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.buraya bakarak neden E-mail adresinin gerekli olduÄŸunu "
+#~ "görebilirsiniz: %(gravatar_faq_url)s"
+
+#~ 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 ""
+#~ "<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>. %(email)s adresini doğrulayın ya "
+#~ "da %(change_email_url)s adresine gidin."
+
+#~ msgid "Email not changed"
+#~ msgstr "E-mail deÄŸiÅŸmedi"
+
+#, fuzzy
+#~ 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.eski "
+#~ "%(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"
+
+#~ msgid "email key not sent"
+#~ msgstr "e-posta kodu gönderilmedi"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "E-mail şifresi %(email)s yollanamadı. E-mail değiştirmek için: "
+#~ "%(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 "
+#~ "%(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>Yeni %(provider)s hesabı kayıt bilgisi için lütfen bakınız: "
+#~ "%(gravatar_faq_url)s"
+
+#, fuzzy
+#~ 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>%(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 ""
+#~ "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>baÅŸka bir "
+#~ "%(provider)s hesabı kaydetmek için bakınız: %(gravatar_faq_url)s"
+
+#, fuzzy
+#~ 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>Yeni Facebook hesabı ile bağlanma kaydı bilgisi: "
+#~ "%(gravatar_faq_url)s"
+
+#~ msgid "This account already exists, please use another."
+#~ msgstr ""
+#~ "Bu kullanıcı adı sitemizde zaten kayıtlı. Lütfen başka bir tane deneyin."
+
+#~ msgid "Screen name label"
+#~ msgstr "Görünen isim etiketi"
+
+#, fuzzy
+#~ msgid "Email address label"
+#~ msgstr ""
+#~ "<strong>Email Address</strong> (<i>will <strong>not</strong> be shared "
+#~ "with anyone, must be valid</i>)"
+
+#, fuzzy
+#~ 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 "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."
+
+#~ 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"
+#~ " "
+#~ 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"
+
+#~ 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?"
+
+#, fuzzy
+#~ msgid "with openid it is easier"
+#~ msgstr "With the OpenID you don't need to create new username and password."
+
+#, fuzzy
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "You can safely re-use the same login for all OpenID-enabled websites."
+
+#, fuzzy
+#~ msgid "openid is widely adopted"
+#~ msgstr ""
+#~ "There are > 160,000,000 OpenID account in use. Over 10,000 sites are "
+#~ "OpenID-enabled."
+
+#, fuzzy
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID is based on an open standard, supported by many organizations."
+#~ "OpenID açık kaynak standartları ile desteklenmektedir"
+
+#~ msgid "Find out more"
+#~ msgstr "Daha fazla bilgi"
+
+#~ 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 ""
+#~ "<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 ""
+#~ "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)"
+
+#, 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."
@@ -3984,12 +4554,6 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "DeÄŸiÅŸikliÄŸi kaydet"
-#~ msgid "Cancel"
-#~ msgstr "Iptal"
-
-#~ msgid "hide preview"
-#~ msgstr "önizlemeyi gizle"
-
#~ msgid "show preview"
#~ msgstr "önizlemeyi göster"
@@ -4030,8 +4594,8 @@ 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"
+#~ "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 "
@@ -4137,8 +4701,8 @@ 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 "
+#~ "- 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 "
@@ -4278,24 +4842,12 @@ msgstr ""
#~ "görüş, öneri ve eleştirilerinizi bekliyoruz. Her konuda bize yazmaktan "
#~ "çekinmeyin."
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "geçerli bir e-mail adresi girin"
-
#~ msgid "(this field is required)"
#~ msgstr "(bu alanın doldurulması gereklidir)"
#~ msgid "Send Feedback"
#~ msgstr "Geribildirim gönder"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Hello, this is a %(site_title)s forum feedback message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Merhaba, bu bir %(site_title)s geribildirim mesajıdır.\n"
-
#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
#~ msgstr "<p>Sevgili %(receiving_user_name)s,</p>"
@@ -4366,8 +4918,8 @@ msgstr ""
#~ "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"
+#~ "<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>"
@@ -4378,27 +4930,21 @@ msgstr ""
#~ msgstr "Bu soruyu tekrar aç"
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "rozetler:"
-
-#~ msgid "previous"
-#~ msgstr "önceki"
-
-#~ msgid "current page"
-#~ msgstr "ÅŸuanki sayfa"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "sayfa numarası %(num)s"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "bunu beğendim (iptal için tekrar tıklayın)"
-#~ msgid "next page"
-#~ msgstr "sonraki sayfa"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "bu cevabı beğendim (iptal etmek için tekrar tıklayın)"
-#~ msgid "posts per page"
-#~ msgstr "sayfa başına mesaj"
+#~ msgid "current number of votes"
+#~ msgstr "oy geçerli sayısı"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "karmanız %(reputation)s"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "bu yazıyı beğenmedim (iptal etmek için tekrar tıklayın)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "bu cevabı beğenmedim (iptal etmek için tekrar tıklayın)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4422,9 +4968,6 @@ msgstr ""
#~ msgid "delete this comment"
#~ msgstr "bu yorumu sil"
-#~ msgid "edit"
-#~ msgstr "deÄŸiÅŸtir"
-
#~ msgid "add comment"
#~ msgstr "yorum ekle"
@@ -4444,14 +4987,23 @@ msgstr ""
#~ msgstr[1] "daha fazla yorum <strong>%(counter)s</strong> görün"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "bu alanın doldurulması gereklidir"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "karmanız %(reputation)s"
-#~ msgid "(required)"
-#~ msgstr "(gerekli)"
+#~ msgid "previous"
+#~ msgstr "önceki"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Toggle gerçek zamanlı Markdown editörü önizleme"
+#~ 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"
@@ -4467,6 +5019,10 @@ msgstr ""
#~ 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"
@@ -4480,220 +5036,6 @@ msgstr ""
#~ msgid "Privacy policy"
#~ msgstr "Gizlilik politikası"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "bunu beğendim (iptal için tekrar tıklayın)"
-
-#~ msgid "current number of votes"
-#~ msgstr "oy geçerli sayısı"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "bu yazıyı beğenmedim (iptal etmek için tekrar tıklayın)"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "yeniden etiketlendi"
-
-#~ msgid "reopen"
-#~ msgstr "yeniden aç"
-
-#~ msgid "close"
-#~ msgstr "kapat"
-
-#~ 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"
-
-#~ msgid "delete"
-#~ msgstr "sil"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" 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 ""
-#~ "\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 "i like this answer (click again to cancel)"
-#~ msgstr "bu cevabı beğendim (iptal etmek için tekrar tıklayın)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "bu cevabı beğenmedim (iptal etmek için tekrar tıklayın)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "bu cevabı favori olarak işaretle (geri almak için tıklayın)"
-
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "bu soruyu yazan kişi, bu cevabı doğru olarak seçti"
-
-#~ msgid "answer permanent link"
-#~ msgstr "kalıcı bağlantıyı cevapla"
-
-#~ msgid "permanent link"
-#~ msgstr "kalıcı bağlantı"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Cevabı yayınla"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "veya"
-
-#~ msgid "email"
-#~ msgstr "E-mail"
-
-#~ 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"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ 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."
-
-#, 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."
-
-#, fuzzy
-#~ 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)! Kendi soruna cevap vermek üzeresin. Ya da sorunu "
-#~ "daha da açıklamak mı istiyorsun?"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "lütfen sadece cevap verin, tartışma yok."
-
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Cevap yollamak için üye girişi yapmalısınız"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Kendi soruna cevap yaz!"
-
-#~ msgid "Answer the question"
-#~ msgstr "Cevabı yayınla"
-
-#, 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 tags"
-#~ msgstr "Etiketleri"
-
-#~ 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 "Edit question"
#~ msgstr "Soruyu düzenle"
@@ -4749,9 +5091,17 @@ msgstr ""
#~ 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"
@@ -4785,625 +5135,236 @@ msgstr ""
#~ msgid "Nothing found."
#~ msgstr "Hiçbir şey bulunamadı."
-#~ msgid "Change email"
-#~ msgstr "E-mai deÄŸiÅŸtir"
-
-#~ msgid "Save your email address"
-#~ msgstr "E-mail adresinizi kaydedin"
-
-#~ msgid "change %(email)s info"
-#~ msgstr "bilgileri %(email)s deÄŸiÅŸtir"
-
-#, fuzzy
-#~ 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.buraya bakarak neden E-mail adresinin gerekli olduÄŸunu "
-#~ "görebilirsiniz: %(gravatar_faq_url)s"
-
-#~ 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 "Validate email"
-#~ msgstr "E-mail adresini doÄŸrula"
+#~ msgid "with %(author_name)s's contributions"
+#~ msgstr "%(author_name)s 'ın katkılarıyla"
-#, fuzzy
-#~ 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>. %(email)s adresini doğrulayın ya "
-#~ "da %(change_email_url)s adresine gidin."
+#~ msgid "Search tips:"
+#~ msgstr "Arama ipuçları:"
-#~ msgid "Email not changed"
-#~ msgstr "E-mail deÄŸiÅŸmedi"
+#~ msgid "reset author"
+#~ msgstr "yazarı sil"
#, fuzzy
-#~ 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.eski %"
-#~ "(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 " or "
+#~ msgstr "veya"
-#~ msgid "thanks for verifying email"
-#~ msgstr "E-posta adresinizi onayladığınız için teşekkürler"
+#~ msgid "reset tags"
+#~ msgstr "etiketleri temizle"
-#~ msgid "email key not sent"
-#~ msgstr "e-posta kodu gönderilmedi"
+#~ msgid "start over"
+#~ msgstr "baÅŸtan baÅŸla"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
#~ msgstr ""
-#~ "E-mail şifresi %(email)s yollanamadı. E-mail değiştirmek için: %"
-#~ "(change_link)s adresine bakın."
+#~ "- daha fazla etiket eklemek veya incelemek için inceleme alanını genişlet"
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Kayıt"
+#~ msgid "Search tip:"
+#~ msgstr "Arama ipucu:"
-#, fuzzy
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgid "add tags and a query to focus your search"
#~ 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>Yeni %(provider)s hesabı kayıt bilgisi için lütfen bakınız: %"
-#~ "(gravatar_faq_url)s"
+#~ "etiketleri kullanmak, arama sonucuna tam olarak odaklanmanızı sağlar"
-#, fuzzy
-#~ 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>%(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"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "Harika! Cevapsız bir soru bile kalmamış..."
#, fuzzy
-#~ 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>baÅŸka bir %"
-#~ "(provider)s hesabı kaydetmek için bakınız: %(gravatar_faq_url)s"
+#~ msgid "No questions here. "
+#~ msgstr "Malesef, henüz beğenilmiş bir soru mevcut değil."
#, fuzzy
-#~ 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>Yeni Facebook hesabı ile bağlanma kaydı bilgisi: %"
-#~ "(gravatar_faq_url)s"
-
-#~ msgid "This account already exists, please use another."
-#~ msgstr ""
-#~ "Bu kullanıcı adı sitemizde zaten kayıtlı. Lütfen başka bir tane deneyin."
+#~ msgid "Please follow some questions or follow some users."
+#~ msgstr "Beğendiğiniz soruları, favorilerinize ekleyebilirsiniz."
-#~ msgid "Screen name label"
-#~ msgstr "Görünen isim etiketi"
+#~ msgid "You can expand your search by "
+#~ msgstr "Ayrıntılı arama yapabilirsiniz"
-#, fuzzy
-#~ msgid "Email address label"
-#~ msgstr ""
-#~ "<strong>Email Address</strong> (<i>will <strong>not</strong> be shared "
-#~ "with anyone, must be valid</i>)"
+#~ msgid "resetting author"
+#~ msgstr "yazar sıfırlanıyor"
-#, fuzzy
-#~ 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 "resetting tags"
+#~ msgstr "etiketler sıfırlanıyor"
-#~ msgid "please select one of the options above"
-#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+#~ msgid "starting over"
+#~ msgstr "baştan başlıyor"
-#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgid "Please always feel free to ask your question!"
#~ msgstr ""
-#~ "Etiket filtreleme aracı sağ panelde, oturum açınca bir kez görünecektir."
-
-#~ msgid "create account"
-#~ msgstr "hesap oluÅŸtur"
-
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "Sorucevap.de sitesine kayıt olduğunuz için teşekkür ederiz!"
-
-#~ msgid "Your account details are:"
-#~ msgstr "Hesap ayrıntılarınız şöyledir:"
-
-#~ msgid "Username:"
-#~ msgstr "Kullanıcı adı:"
-
-#~ msgid "Password:"
-#~ msgstr "Åžifre:"
-
-#~ msgid "Please sign in here:"
-#~ msgstr "Lütfen buradan giriş yapın:"
-
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr "Saygılarımızla, <BR> Site yönetimi"
-
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Sorucevap.de sitesinden selamlar..."
-
-#~ 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:"
+#~ "Asla soru sormaktan çekinmeyin! Sorun ki, sayenizde başkaları da öğrensin!"
-#~ 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."
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "Aradığını bulamadın mı?"
-#~ 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 ""
-#~ "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 "Please, post your question!"
+#~ msgstr "Hemen kendi sorunu yolla!"
-#~ msgid "Logout"
-#~ msgstr "Çıkış"
+#~ msgid "subscribe to the questions feed"
+#~ msgstr "soruya ve cevaplarına abone ol"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+#~ 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 "Sign in"
-#~ msgstr "giriÅŸ/"
+#~ 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"
-#~ msgid "User login"
-#~ msgstr "Kullanıcı girişi"
+#, 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"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
+#~ " %(counter)s Answer\n"
#~ " "
-#~ msgstr ""
+#~ msgid_plural ""
#~ "\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"
+#~ " %(counter)s Answers\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."
-
-#, 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"
+#~ msgstr[0] ""
+#~ "\n"
+#~ "%(counter)s Cevap:"
+#~ msgstr[1] ""
+#~ "\n"
+#~ "%(counter)s Cevaplar:"
-#~ msgid "Login"
-#~ msgstr "GiriÅŸ"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "ilk önce eski cevaplar görünecek"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Yeni ÅŸifre ayarla"
+#~ msgid "oldest answers"
+#~ msgstr "eski cevaplar"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "lütfen şifrenizi yeniden yazın"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "yeni cevaplar ilk önce görünecek"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "son görülme"
+#~ msgid "newest answers"
+#~ msgstr "yeni cevaplar"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Hesap silindi."
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "çok oy alan cevaplar önce görünsün"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Hala aklınıza takılan bir soru mu var?"
+#~ msgid "popular answers"
+#~ msgstr "popüler cevaplar"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Hesabınıza yeni bir şifre verin."
+#~ msgid "Answer Your Own Question"
+#~ msgstr "Kendi soruna cevap yaz!"
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Hesabınıza yeni bir şifre verin."
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "Neden OpenID kullanıyoruz?"
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "Cevap yollamak için üye girişi yapmalısınız"
-#, fuzzy
-#~ msgid "with openid it is easier"
-#~ msgstr "With the OpenID you don't need to create new username and password."
+#~ msgid "Your answer"
+#~ msgstr "Cevabınız"
-#, fuzzy
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "Bu soruya ilk cevabı sen yaz!"
#, fuzzy
-#~ msgid "openid is widely adopted"
+#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
-#~ "There are > 160,000,000 OpenID account in use. Over 10,000 sites are "
-#~ "OpenID-enabled."
+#~ "<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."
#, fuzzy
-#~ msgid "openid is supported open standard"
+#~ msgid "answer your own question only to give an answer"
#~ msgstr ""
-#~ "OpenID is based on an open standard, supported by many organizations."
-#~ "OpenID açık kaynak standartları ile desteklenmektedir"
-
-#~ msgid "Find out more"
-#~ msgstr "Daha fazla bilgi"
-
-#~ msgid "Get OpenID"
-#~ msgstr "OpenID hesabı açın"
-
-#~ msgid "Signup"
-#~ msgstr "Kaydol"
+#~ "<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)! Kendi soruna cevap vermek üzeresin. Ya da sorunu "
+#~ "daha da açıklamak mı istiyorsun?"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "lütfen sadece cevap verin, tartışma yok."
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Kullanıcı adı ve şifre oluştur"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Cevap yollamak için üye girişi yapmalısınız"
-#~ msgid "Create login name and password"
-#~ msgstr "Kullanıcı adı ve şifre oluştur"
+#~ msgid "Answer the question"
+#~ msgstr "Cevabı yayınla"
#, fuzzy
-#~ 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 ""
-#~ "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"
+#~ 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"
+#~ msgid "email"
+#~ msgstr "E-mail"
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Hesap ayrıntılarınız şöyledir:"
+#~ msgid "Question tools"
+#~ msgstr "Etiketleri"
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "deÄŸiÅŸiklikler kaydedildi"
+#~ msgid "click to unfollow this question"
+#~ msgstr "En ilgi çekici soruyu gormek için tıklayın"
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "yukle/"
+#~ msgid "click to follow this question"
+#~ msgstr "En ilgi çekici soruyu gormek için tıklayın"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "silinmiÅŸ cevap"
+#~ msgid "email the updates"
+#~ msgstr "E-mail güncellemeleri iptal edildi"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "silinmiÅŸ cevap"
-
-#~ 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ı"
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "soruya ve cevaplarına abone ol"
#, 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 "subsribe to rss feed"
+#~ msgstr "soruya ve cevaplarına abone ol"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "temel HTML etiketleri de desteklenmektedir"
+#~ msgid "question asked"
+#~ msgstr "sorulma zamanı"
-#~ msgid "learn more about Markdown"
-#~ msgstr "Markdown hakkında daha fazla bilgi"
+#~ msgid "question was seen"
+#~ msgstr "izlenme sayısı"
-#~ msgid "login to post question info"
-#~ msgstr "soru bilgisi göndermek için giriş yapın"
+#~ msgid "times"
+#~ msgstr "kez"
-#, 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. "
+#~ msgid "last updated"
+#~ msgstr "son güncelleme"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "Soru göndermek için üye girişi yapmalısınız"
+#~ msgid "Related questions"
+#~ msgstr "Ä°lgili sorular"
-#~ msgid "Ask your question"
-#~ msgstr "Soruyu yayınla"
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "Yeni cevaplar için beni günlük olarak uyar"
-#, 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"
+#~ msgid "Notify me weekly when there are any new answers"
+#~ msgstr "Yeni cevaplar için beni haftalık olarak uyar"
#, 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"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "Yeni cevaplar için beni haftalık olarak uyar"
-#, 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"
-
-#~ 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 "questions"
-#~ msgstr "sorular"
-
-#~ msgid "users"
-#~ msgstr "kullanıcılar"
-
-#~ msgid "badges"
-#~ msgstr "rozetler"
-
-#~ msgid "ask a question"
-#~ msgstr "soru sor"
-
-#~ msgid "logout"
-#~ msgstr "çıkış"
-
-#~ msgid "login"
-#~ msgstr "giriÅŸ"
-
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "Temel Ayarlar"
-
-#~ msgid "search"
-#~ msgstr "ara"
-
-#~ 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"
-
-#~ msgid "Interesting tags"
-#~ msgstr "İlginç etiketler"
-
-#~ 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 "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"
-
-#~ msgid "rss feed"
-#~ msgstr "rss beslemesi"
-
-#~ 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"
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ 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."
+#~ "%(profile_url)s adresini kullanarak, size gelecek uyarı e-postalarının "
+#~ "sıklığını değiştirebilirsiniz."
#, fuzzy
-#~ msgid "Please star (bookmark) 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!"
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
#~ msgstr ""
-#~ "Asla soru sormaktan çekinmeyin! Sorun ki, sayenizde başkaları da öğrensin!"
-
-#~ msgid "Contributors"
-#~ msgstr "Yazarlar"
-
-#~ msgid "Related tags"
-#~ msgstr "Ä°lgili etiketler"
-
-#~ msgid "In:"
-#~ msgstr "Sorular:"
-
-#~ msgid "see unanswered questions"
-#~ msgstr "cevapsız sorular gör"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "beğendiğiniz soruları gör"
-
-#~ msgid "Sort by:"
-#~ msgstr "Sıralama:"
+#~ "<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"
@@ -5448,6 +5409,10 @@ msgstr ""
#~ msgstr "sorular"
#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr "En fazla %(tag_count)d etiket kullanabilirsiniz"
+
+#, fuzzy
#~ msgid "select:"
#~ msgstr "sil"
@@ -5474,6 +5439,10 @@ msgstr ""
#~ msgid "update profile"
#~ msgstr "profilimi güncelle"
+#, fuzzy
+#~ msgid "manage login methods"
+#~ msgstr "Kullanıcı girişi"
+
#~ msgid "real name"
#~ msgstr "gerçek ismi"
@@ -5506,6 +5475,14 @@ msgstr ""
#~ 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"
@@ -5514,9 +5491,16 @@ msgstr ""
#~ 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"
@@ -5628,6 +5612,243 @@ msgstr ""
#~ 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"
+#~ " 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 "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"
+
+#, fuzzy
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "cevap"
+#~ msgstr[1] "cevap"
+
+#, fuzzy
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "oy/"
+#~ msgstr[1] "oy/"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "cevapsız sorular gör"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "beğendiğiniz soruları gör"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "rozetler:"
+
+#~ msgid "logout"
+#~ msgstr "çıkış"
+
+#~ msgid "login"
+#~ msgstr "giriÅŸ"
+
+#, fuzzy
+#~ msgid "settings"
+#~ msgstr "Temel Ayarlar"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "geçerli bir e-mail adresi girin"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "bunu beğendim (iptal için tekrar tıklayın)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "bu yazıyı beğenmedim (iptal etmek için tekrar tıklayın)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr "Soru şu nedenle kapatılmış olabilir: %(close_reason)s"
+
+#, 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 "mark this answer as favorite (click again to undo)"
+#~ msgstr "bu cevabı favori olarak işaretle (geri almak için tıklayın)"
+
+#~ msgid "Question tags"
+#~ msgstr "Etiketleri"
+
+#~ msgid "questions"
+#~ msgstr "sorular"
+
+#~ msgid "search"
+#~ msgstr "ara"
+
+#~ msgid "rss feed"
+#~ msgstr "rss beslemesi"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr "Beğendiğiniz soruları, favorilerinize ekleyebilirsiniz."
+
+#~ 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):"
+
+#~ msgid "Keys to connect the site with external services like Facebook, etc."
+#~ msgstr ""
+#~ "Siteyi Facebook, vb. gibi servisler ile bağlamak için gerekli kodlar"
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "Bir eylemleri gerçekleştirmek için gerekli minimum itibar"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "Siteler"
+
+#~ msgid "Q&A forum website parameters and urls"
+#~ msgstr "Soru/Cevap sitesi parametreleri ve URL'leri"
+
+#, fuzzy
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "Tema: genel ayarlar"
+
+#~ msgid "Limits applicable to votes and moderation flags"
+#~ msgstr "Oylama ve işaretlemeler için limitler"
+
+#~ msgid "Setting groups"
+#~ msgstr "Ayar grupları"
+
+#~ 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 ""
+#~ "Bu seçenek, aşağıdaki kategoriler için e-posta ile bildirilen "
+#~ "güncellemelerin sıklığını 5 kategoride belirler: kullanıcı tarafından "
+#~ "sorulan sorular, cevaplanan sorular, yıldızlanan sorular, tüm forum "
+#~ "(seçilen etiketler için) ve kullanıcı hakkındaki soru ve yorumlar"
+
#~ msgid "community wiki"
#~ msgstr "topluluk wikisi"
@@ -6473,8 +6694,8 @@ msgstr ""
#~ msgstr "Her zamanki giriÅŸ bilgileri"
#~ msgid ""
-#~ "how to login with password through external login website or use %"
-#~ "(feedback_url)s"
+#~ "how to login with password through external login website or use "
+#~ "%(feedback_url)s"
#~ msgstr ""
#~ "Sitemize harici bir şifre ile nasıl girilebileceğini mi öğrenmek "
#~ "istiyorsunuz? Tıklayın: %(feedback_url)s"
@@ -6585,9 +6806,6 @@ msgstr ""
#~ "information in their profiles. Forum will never display such information "
#~ "without a request from the user."
-#~ msgid "Other Services"
-#~ msgstr "DiÄŸer Hizmetler"
-
#~ 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 "
@@ -6744,8 +6962,8 @@ msgstr ""
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " see <strong>%"
-#~ "(counter)s</strong> more\n"
+#~ " see <strong>"
+#~ "%(counter)s</strong> more\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -6759,8 +6977,8 @@ msgstr ""
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " see <strong>%"
-#~ "(counter)s</strong> more comments\n"
+#~ " see <strong>"
+#~ "%(counter)s</strong> more comments\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
diff --git a/askbot/locale/tr/LC_MESSAGES/djangojs.mo b/askbot/locale/tr/LC_MESSAGES/djangojs.mo
index 36a5bdfa..7226c15d 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 5872aa10..c93269f2 100644
--- a/askbot/locale/tr/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/tr/LC_MESSAGES/djangojs.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-08 02:32-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
"MIME-Version: 1.0\n"
@@ -17,49 +17,328 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+msgstr ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr "buna yetkiniz yoktur"
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "en cevap olarak kendi cevabınızı seçemezsiniz"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr "lütfen üye girişi yapınız"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr "üye girişi yapmadan oy kullanamazsınız"
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "şikayetinizi onaylayın"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr "üye girişi yapmadan şikayet gönderemezsiniz"
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "Bunu silmek istediÄŸinizden emin misiniz?"
+
+#: skins/common/media/js/post.js:297
+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
+msgid "post recovered"
+msgstr "yazı geri alındı"
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr "yazı silindi"
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr "yorum ekle"
+
+#: skins/common/media/js/post.js:960
+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 ""
+
+#: 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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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:125 skins/old/media/js/user.js:129
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr "kalın"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "italik"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "link"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "alıntı"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "hazır metin"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "resimler"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "numaralı liste"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "iÅŸaretli liste"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "Başlık"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "yatay bar"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "geri"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "yeniden"
+
+#: skins/common/media/js/wmd/wmd.js:53
+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
+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
+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/vi/LC_MESSAGES/django.mo b/askbot/locale/vi/LC_MESSAGES/django.mo
index 4f175ad6..143c1d8f 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 e851ca21..bd60665c 100644
--- a/askbot/locale/vi/LC_MESSAGES/django.po
+++ b/askbot/locale/vi/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:41-0600\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"X-Translated-Using: django-rosetta 0.5.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -126,19 +126,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr ""
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -149,7 +149,7 @@ msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr ""
@@ -193,446 +193,492 @@ msgid "Message text"
msgstr ""
#: forms.py:542
-msgid "Your name:"
+msgid "Your name (optional):"
msgstr ""
#: forms.py:543
-msgid "Email (not shared with anyone):"
+#, fuzzy
+msgid "Email:"
msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr ""
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr ""
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
msgid "this email will be linked to gravatar"
msgstr ""
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr ""
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr ""
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
msgid "Show country"
msgstr ""
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr ""
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr ""
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr ""
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr ""
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr ""
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr ""
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr ""
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr ""
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr ""
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr ""
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr ""
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr ""
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr ""
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr ""
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr ""
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr ""
-#: 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: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/"
msgstr ""
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr ""
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr ""
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr ""
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr ""
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr ""
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr ""
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr ""
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr ""
-#: urls.py:210
+#: urls.py:214
msgid "subscriptions/"
msgstr ""
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr ""
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr ""
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr ""
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr ""
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
#, fuzzy
msgid "account/"
msgstr "Signup"
-#: conf/badges.py:12
+#: conf/access_control.py:8
+#, fuzzy
+msgid "Access control 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."
+
+#: 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:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr ""
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr ""
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr ""
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr ""
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr ""
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr "Welcome to the Q&A forum"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Asked"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: 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:183
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
#, fuzzy
msgid "Allow only one account per email address"
msgstr "Your email <i>(never shared)</i>"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -642,61 +688,61 @@ 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:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -704,11 +750,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -716,135 +762,135 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "Change your password"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -852,227 +898,223 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "Post Your Answer"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "unanswered questions"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
+#: conf/license.py:13
+msgid "Content LicensContent License"
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."
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
msgid "License homepage"
msgstr ""
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
msgstr ""
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1080,43 +1122,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1125,11 +1167,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1139,165 +1181,165 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr ""
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr ""
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "Post Your Answer"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "oldest"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr ""
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
#, fuzzy
msgid "Leave comments"
msgstr "post a comment"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr ""
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr ""
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
#, fuzzy
msgid "Close own questions"
msgstr "Ask Your Question"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
#, fuzzy
msgid "Reopen own questions"
msgstr "list of all questions"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr ""
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr ""
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
#, fuzzy
msgid "Close questions asked by others"
msgstr "Asked"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr ""
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1305,44 +1347,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1350,49 +1392,50 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
msgstr ""
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "Tags"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
msgstr ""
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
-#: conf/site_modes.py:63
-msgid "Site modes"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1400,51 +1443,51 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr ""
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1557,33 +1600,33 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr ""
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1591,40 +1634,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1636,11 +1679,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1649,21 +1692,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1672,21 +1715,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1695,19 +1738,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1718,64 +1761,84 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
msgstr ""
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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:12
#, fuzzy
msgid "User settings"
msgstr ""
@@ -1783,70 +1846,76 @@ msgstr ""
"user sessions. Cookies must be enabled in your browser so that forum can "
"work for you."
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Your email <i>(never shared)</i>"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr ""
@@ -1948,191 +2017,196 @@ msgstr "answered question"
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:121
+#: const/__init__.py:122
#, fuzzy
msgid "asked a question"
msgstr "Ask Your Question"
-#: const/__init__.py:122
+#: const/__init__.py:123
#, fuzzy
msgid "answered a question"
msgstr "unanswered"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "received badge"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "unanswered questions"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "unanswered questions"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "answered question"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "commented question"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr ""
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr ""
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr ""
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr ""
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr ""
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:214
+#: const/__init__.py:219
msgid "only selected"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr ""
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr ""
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr ""
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr ""
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr ""
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr ""
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2270,7 +2344,7 @@ msgid "Incorrect username."
msgstr "sorry, there is no such user name"
#: 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:206
msgid "signin/"
msgstr ""
@@ -2399,74 +2473,74 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "New password created"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, 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:1092
+#: deps/django_authopenid/views.py:1098
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2474,99 +2548,32 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, 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
-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 "Logout Now"
-
-#: 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 ""
-
-#: 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
-msgid "Setting groups"
-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 ""
@@ -2594,15 +2601,15 @@ 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>"
+"<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>"
+"<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
@@ -2611,6 +2618,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "Ask Your Question"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "least voted questions"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2662,8 +2684,8 @@ msgstr ""
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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 "
@@ -2671,61 +2693,72 @@ msgstr ""
"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "please sign-in"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:347
+#: models/__init__.py:353
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:375
+#: models/__init__.py:361
+#, 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"
msgstr ""
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
-#: models/__init__.py:414
+#: models/__init__.py:428
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2733,7 +2766,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:415
+#: models/__init__.py:429
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2741,13 +2774,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:417
+#: models/__init__.py:431
#, 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:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
#, fuzzy
msgid "blocked users cannot post"
msgstr ""
@@ -2755,7 +2788,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
#, fuzzy
msgid "suspended users cannot post"
msgstr ""
@@ -2763,7 +2796,7 @@ 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:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2773,56 +2806,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2831,61 +2864,61 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
#, fuzzy
msgid "blocked users cannot flag posts"
msgstr ""
@@ -2893,7 +2926,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:749
+#: models/__init__.py:763
#, fuzzy
msgid "suspended users cannot flag posts"
msgstr ""
@@ -2901,140 +2934,141 @@ 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:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr ""
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
msgid "in two days"
msgstr ""
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3042,7 +3076,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:1743
+#: models/__init__.py:1757
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3050,48 +3084,38 @@ msgstr[0] ""
"If you are an active participant in this community, you will be recognized "
"with this badge."
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: 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:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "Tags"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr ""
-
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3363,52 +3387,62 @@ msgstr ""
msgid "Very active in one tag"
msgstr ""
-#: models/meta.py:112
+#: 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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
msgid "\" and more"
msgstr ""
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr ""
-#: models/question.py:912
+#: models/question.py:810
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr ""
-#: models/question.py:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr ""
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr ""
@@ -3421,8 +3455,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3476,6 +3510,82 @@ msgstr ""
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 ""
+
+#: 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
+msgid ""
+"Sincerely,\n"
+"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"
+"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
+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 ""
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "no"
@@ -3654,128 +3764,113 @@ msgstr ""
msgid "Please sign in to vote"
msgstr ""
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr ""
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:131
+#: views/readers.py:151
#, 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:139
+#: 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:177
+#: 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:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] ""
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] ""
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] ""
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr ""
-#: views/users.py:225
+#: views/users.py:212
msgid "moderate user"
msgstr ""
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr ""
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr ""
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr ""
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr ""
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr ""
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr ""
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr ""
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr ""
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "user karma"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "Profile - User's Karma"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr ""
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr ""
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr ""
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr ""
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr ""
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr ""
@@ -3844,6 +3939,325 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#, fuzzy
+#~ msgid "Documentation"
+#~ msgstr "karma"
+
+#, fuzzy
+#~ msgid "Log out"
+#~ msgstr "Logout Now"
+
+#, 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 "Change email"
+#~ msgstr "Change Email"
+
+#, fuzzy
+#~ msgid "Save your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
+
+#~ 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>)"
+
+#, 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>."
+
+#~ 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."
+
+#, 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 "
+#~ "%(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"
+
+#, fuzzy
+#~ msgid "Logout"
+#~ msgstr "Logout Now"
+
+#~ 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"
+#~ " "
+#~ 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."
+
+#~ 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."
+
+#, 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 "
+#~ "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."
+
+#, fuzzy
+#~ 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 "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"
+#~ 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"
+#~ msgstr "Tags"
+
+#, fuzzy
+#~ msgid "Edit answer"
+#~ msgstr "oldest"
+
+#, fuzzy
+#~ msgid "Ask a question"
+#~ msgstr "Ask Your Question"
+
+#, fuzzy
+#~ msgid "Badges 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 "Community gives you awards for your questions, answers and votes."
#~ msgstr ""
#~ "If your questions and answers are highly voted, your contribution to this "
@@ -3852,8 +4266,8 @@ 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"
+#~ "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 "
@@ -3878,6 +4292,14 @@ 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."
@@ -3888,6 +4310,10 @@ msgstr ""
#~ 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 "
@@ -3916,14 +4342,30 @@ msgstr ""
#~ "are gradually assigned to the users based on those points."
#, fuzzy
+#~ 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"
@@ -3955,6 +4397,10 @@ msgstr ""
#~ 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!"
@@ -3975,9 +4421,6 @@ msgstr ""
#~ "containing <strong><span class=\"darkred\">%(searchtitle)s</span></"
#~ "strong></p>"
-#~ msgid "page number %(num)s"
-#~ msgstr "page %(num)s"
-
#, fuzzy
#~ msgid "anonymous user"
#~ msgstr ""
@@ -3985,21 +4428,129 @@ msgstr ""
#~ "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"
+#~ " %(counter)s Answer\n"
#~ " "
#~ msgid_plural ""
#~ "\n"
-#~ " %(counter)s Answers:\n"
+#~ " %(counter)s Answers\n"
#~ " "
#~ msgstr[0] ""
#~ "\n"
@@ -4008,53 +4559,48 @@ msgstr ""
#~ "\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"
-#~ msgid "permanent link"
-#~ msgstr "link"
-
#, fuzzy
-#~ msgid "swap with question"
+#~ msgid "Answer Your Own Question"
#~ msgstr "Post Your Answer"
-#~ 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 ""
-#~ "<strong>Notify me</strong> weekly 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 "Login/Signup to Answer"
+#~ msgstr "Login/Signup to Post"
-#~ 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 "Your answer"
+#~ msgstr "most voted"
#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Login/Signup to Post"
+#~ 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 ""
@@ -4083,6 +4629,10 @@ msgstr ""
#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
#~ "really helps to select the best questions and answers!"
+#, fuzzy
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Login/Signup to Post"
+
#~ msgid "Answer the question"
#~ msgstr "Post Your Answer"
@@ -4102,9 +4652,6 @@ msgstr ""
#~ msgid "email the updates"
#~ msgstr "Last updated"
-#~ msgid "Question tags"
-#~ msgstr "Tags"
-
#~ msgid "question asked"
#~ msgstr "Asked"
@@ -4115,247 +4662,179 @@ msgstr ""
#~ msgstr "Last updated"
#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Post Your Answer"
-
-#~ msgid "reputation"
-#~ msgstr "karma"
-
-#~ msgid "Change email"
-#~ msgstr "Change Email"
+#~ msgid "Related questions"
+#~ msgstr "Ask Your Question"
-#~ msgid "change %(email)s info"
+#~ msgid "Notify me once a day when there are any new answers"
#~ 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>"
+#~ "<strong>Notify me</strong> once a day by email when there are any new "
+#~ "answers or updates"
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgid "Notify me weekly when there are any new answers"
#~ 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."
+#~ "<strong>Notify me</strong> weekly when there are any new answers or "
+#~ "updates"
-#~ msgid "Your new Email"
+#, fuzzy
+#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
-#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
-#~ "anyone, must be valid)"
+#~ "<strong>Notify me</strong> weekly when there are any new answers or "
+#~ "updates"
-#~ msgid "Your Email"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ msgstr ""
-#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+#~ "(note: you can always <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
+#~ "updates)"
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
#~ 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>."
+#~ "<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 "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."
+#, fuzzy
+#~ msgid "change picture"
+#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-#~ 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."
+#, fuzzy
+#~ msgid "Screen Name"
+#~ msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
-#~ msgid "thanks for verifying email"
+#, fuzzy
+#~ msgid "Email subscription settings"
#~ 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"
+#~ "<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 key not sent %(email)s change email here %(change_link)s"
+#~ msgid "email subscription settings info"
#~ 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."
-
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "karma"
+#~ "<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 "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 "Stop sending email"
+#~ msgstr "Stop Email"
-#~ 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>"
+#, fuzzy
+#~ msgid "followed questions"
+#~ msgstr "Ask Your Question"
-#~ 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>"
+#, fuzzy
+#~ msgid "manage login methods"
+#~ msgstr "please sign-in"
-#~ 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 "member for"
+#~ msgstr "member since"
-#~ msgid "Screen name label"
-#~ msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
+#, fuzzy
+#~ msgid "last seen"
+#~ msgstr "Last updated"
-#~ msgid "Email address label"
-#~ msgstr ""
-#~ "<strong>Email Address</strong> (<i>will <strong>not</strong> be shared "
-#~ "with anyone, must be valid</i>)"
+#, fuzzy
+#~ msgid "user website"
+#~ msgstr "Welcome to Q&amp;A forum"
-#~ 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."
+#, fuzzy
+#~ msgid "location"
+#~ msgstr "karma"
-#~ msgid "create account"
-#~ msgstr "Signup"
+#~ msgid "age unit"
+#~ msgstr "years old"
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr ""
-#~ "Sincerely,\n"
-#~ "Q&A Forum Administrator"
+#, fuzzy
+#~ msgid "todays unused votes"
+#~ msgstr "votes"
-#~ msgid "User login"
-#~ msgstr "User login"
+#, fuzzy
+#~ msgid "moderation"
+#~ msgstr "karma"
#, 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>"
+#~ msgid "User status changed"
+#~ msgstr "user karma"
#, 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 "User reputation changed"
+#~ msgstr "user karma"
#, 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"
+#~ msgid "Send message to %(username)s"
+#~ msgstr "Choose screen name"
#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "Äăng nhập không thành công."
+#~ msgid "Message sent"
+#~ msgstr "years old"
#, fuzzy
-#~ msgid "New password"
-#~ msgstr "New password created"
+#~ 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 "last used"
-#~ msgstr "Last updated"
+#~ msgid "Answer to:"
+#~ msgstr "Tips"
-#~ msgid "with openid it is easier"
-#~ msgstr "With the OpenID you don't need to create new username and password."
+#, fuzzy
+#~ msgid "User profile"
+#~ msgstr "User login"
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
+#~ msgid "graph of user reputation"
+#~ msgstr "Graph of user karma"
-#~ msgid "openid is widely adopted"
-#~ msgstr ""
-#~ "There are > 160,000,000 OpenID account in use. Over 10,000 sites are "
-#~ "OpenID-enabled."
+#~ msgid "reputation history"
+#~ msgstr "karma history"
-#~ msgid "openid is supported open standard"
-#~ msgstr ""
-#~ "OpenID is based on an open standard, supported by many organizations."
+#~ msgid "casted votes"
+#~ msgstr "votes"
#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Vui lòng nhập tên và mật khẩu"
+#~ msgid "votes"
+#~ msgstr "votes"
-#~ 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 "answer tips"
+#~ msgstr "Tips"
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr "ask a question interesting to this community"
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Change Email"
+#~ 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 "change avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
+#~ msgid "please try to provide details"
+#~ msgstr "provide enough details"
-#~ msgid "answer tips"
-#~ msgstr "Tips"
+#, 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 "
@@ -4395,68 +4874,54 @@ msgstr ""
#~ msgstr "provide enough details"
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "answered question"
-
-#~ msgid "Related tags"
-#~ msgstr "Tags"
+#~ msgid "see unanswered questions"
+#~ msgstr "unanswered"
#, fuzzy
#~ msgid "see your followed questions"
#~ msgstr "Ask Your Question"
-#~ 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"
-
#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Ask Your Question"
-
-#~ msgid "member for"
-#~ msgstr "member since"
-
-#~ msgid "age unit"
-#~ msgstr "years old"
+#~ msgid "logout"
+#~ msgstr "Logout Now"
#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "karma"
+#~ msgid "login"
+#~ msgstr "User login"
#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "user karma"
+#~ 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."
#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "years old"
+#~ 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 "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."
+#~ msgid "Question tags"
+#~ msgstr "Tags"
#, fuzzy
-#~ msgid "Answer to:"
+#~ msgid "questions"
#~ msgstr "Tips"
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
-
-#~ msgid "reputation history"
-#~ msgstr "karma history"
-
-#~ msgid "casted votes"
-#~ msgstr "votes"
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "Ask Your Question"
#~ msgid "Email verification subject line"
#~ msgstr "Verification Email from Q&A forum"
@@ -4472,9 +4937,6 @@ msgstr ""
#~ "<br>You can submit your question now and validate email after that. Your "
#~ "question will saved as pending meanwhile. "
-#~ msgid "how to validate email title"
-#~ msgstr "How to validate email and why?"
-
#~ msgid ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
@@ -4502,9 +4964,6 @@ msgstr ""
#~ "completely - please make sure to log out from your OpenID provider as "
#~ "well."
-#~ msgid "Logout now"
-#~ msgstr "Logout Now"
-
#, fuzzy
#~ msgid ""
#~ "\n"
@@ -4649,9 +5108,6 @@ msgstr ""
#~ "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 "Send me a new password"
-
#~ msgid ""
#~ "email explanation how to use new %(password)s for %(username)s\n"
#~ "with the %(key_link)s"
@@ -4695,23 +5151,12 @@ msgstr ""
#~ "\"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"
-#~ msgstr ""
-#~ "<span class='big strong'>Enter your Askbot login and password</span><br/"
-#~ "><span class='grey'>(or select your OpenID provider above)</span>"
-
-#~ msgid "welcome to website"
-#~ msgstr "Welcome to Q&amp;A forum"
-
#~ msgid "Recent awards"
#~ msgstr "Recent badges"
#~ msgid "all awards"
#~ msgstr "all badges"
-#~ msgid "popular tags"
-#~ msgstr "tags"
-
#~ msgid ""
#~ " have total %(q_num)s questions containing %(searchtitle)s in full text "
#~ msgid_plural ""
@@ -4738,9 +5183,6 @@ msgstr ""
#~ msgid "Questions sorted by <strong>number of responses</strong>."
#~ msgstr "Questions sorted by the <strong>number of answers</strong>."
-#~ msgid "Most answered questions are shown first."
-#~ msgstr " "
-
#~ msgid "avatar, see %(gravatar_faq_url)s"
#~ msgstr "<a href='%(gravatar_faq_url)s'>gravatar</a>"
diff --git a/askbot/locale/vi/LC_MESSAGES/djangojs.mo b/askbot/locale/vi/LC_MESSAGES/djangojs.mo
index 497e70f5..45669c6d 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 3448d342..c28b1a5c 100644
--- a/askbot/locale/vi/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/vi/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-10-08 02:33-0500\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"
@@ -17,49 +17,324 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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 ""
+
+#: 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
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:960
+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
msgid "Please enter question title (>10 characters)"
msgstr ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+
+#: 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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+
+#: 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 ""
+
+#: 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
index 9e398bb2..e82cc04e 100644
--- a/askbot/locale/zh-tw/LC_MESSAGES/django.mo
+++ 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 069453a9..4616cbd9 100644
--- a/askbot/locale/zh-tw/LC_MESSAGES/django.po
+++ b/askbot/locale/zh-tw/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
+"POT-Creation-Date: 2011-11-27 02:43-0600\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: exceptions.py:13
@@ -130,20 +130,20 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
#, fuzzy
msgid "suspended"
msgstr "æ›´æ–°"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr ""
@@ -154,7 +154,7 @@ msgstr ""
"你好, \n"
" 論壇管ç†è€…"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr ""
@@ -203,542 +203,585 @@ msgstr "訊æ¯"
#: forms.py:542
#, fuzzy
-msgid "Your name:"
+msgid "Your name (optional):"
msgstr "用戶å"
#: forms.py:543
#, fuzzy
-msgid "Email (not shared with anyone):"
-msgstr "é›»å­éƒµä»¶ï¼ˆ<i>用於頭åƒé¡¯ç¤ºæœå‹™</i>)"
+msgid "Email:"
+msgstr "email"
-#: forms.py:544
+#: forms.py:545
#, fuzzy
msgid "Your message:"
msgstr "Copyright(c)2009.CNPROG.COM"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "匿å者"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "ä¸æœƒå…¬é–‹ï¼Œç”¨æ–¼é ­åƒé¡¯ç¤ºæœå‹™"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "真實姓å"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "個人網站"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
#, fuzzy
msgid "Show country"
msgstr "新帳號"
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "生日"
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "ä¸æœƒå…¬é–‹ï¼Œåªæœƒé¡¯ç¤ºæ‚¨çš„年齡,格å¼ç‚ºï¼šYYYY-MM-DD"
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr "個人簡介"
-#: forms.py:907
+#: forms.py:937
#, fuzzy
msgid "Screen name"
msgstr "姓å"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "該電å­éƒµä»¶å·²è¢«æ³¨å†Šï¼Œè«‹é¸æ“‡å¦ä¸€å€‹å†è©¦ã€‚"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "é¸æ“‡ Email 標籤篩é¸"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "è©¢å•"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "回應"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "個別é¸å®š"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "整個論壇 (標籤篩é¸)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "好, 試試看"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "無須設群 Email è¬è¬"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "è«‹é¸ä¸Šè¿°é¸é …之一"
# footer.html
-#: urls.py:53
+#: urls.py:57
#, fuzzy
msgid "about/"
msgstr "關於本站"
-#: urls.py:54
+#: urls.py:58
#, fuzzy
msgid "faq/"
msgstr "常見å•é¡Œ"
-#: urls.py:55
+#: urls.py:59
#, fuzzy
msgid "privacy/"
msgstr "éš±ç§æ”¿ç­–"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
#, fuzzy
msgid "answers/"
msgstr "回答"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
#, fuzzy
msgid "edit/"
msgstr "編輯"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
#, fuzzy
msgid "revisions/"
msgstr "版本"
-#: 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: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
#, fuzzy
msgid "questions/"
msgstr "å•é¡Œ"
-#: urls.py:78
+#: urls.py:82
#, fuzzy
msgid "ask/"
msgstr "æå•æ–¼"
-#: urls.py:88
+#: urls.py:92
#, fuzzy
msgid "retag/"
msgstr "標籤"
-#: urls.py:93
+#: urls.py:97
#, fuzzy
msgid "close/"
msgstr "關閉"
-#: urls.py:98
+#: urls.py:102
#, fuzzy
msgid "reopen/"
msgstr "打開"
-#: urls.py:103
+#: urls.py:107
#, fuzzy
msgid "answer/"
msgstr "回答"
-#: urls.py:108
+#: urls.py:112
#, fuzzy
msgid "vote/"
msgstr "票"
-#: urls.py:149
+#: urls.py:153
#, fuzzy
msgid "tags/"
msgstr "標籤"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
#, fuzzy
msgid "users/"
msgstr "用戶"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "email 訂閱"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
#, fuzzy
msgid "badges/"
msgstr "çŽç‰Œæ¦œ"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr ""
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr ""
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr ""
-#: urls.py:254
+#: urls.py:258
#, fuzzy
msgid "feedback/"
msgstr "å•é¡Œå›žé¥‹"
-#: urls.py:296
+#: urls.py:300
#, fuzzy
msgid "question/"
msgstr "æå•"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
#, fuzzy
msgid "account/"
msgstr "新帳號"
-#: conf/badges.py:12
+#: 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 ""
+
+#: conf/badges.py:13
#, fuzzy
msgid "Badge settings"
msgstr "帳號設置"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr ""
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr ""
-#: conf/badges.py:102
+#: conf/badges.py:104
#, fuzzy
msgid "Popular Question: minimum views"
msgstr "常見å•é¡Œ"
-#: conf/badges.py:111
+#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
msgstr "顯目å•é¡Œ"
# close.html
-#: conf/badges.py:120
+#: conf/badges.py:122
#, fuzzy
msgid "Famous Question: minimum views"
msgstr "è‘—åå•é¡Œ"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr ""
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr ""
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr ""
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr ""
-#: conf/badges.py:192
+#: conf/badges.py:194
#, fuzzy
msgid "Favorite Question: minimum stars"
msgstr "çè—å•é¡Œ"
-#: conf/badges.py:201
+#: conf/badges.py:203
#, fuzzy
msgid "Stellar Question: minimum stars"
msgstr "主è¦çš„å•é¡Œ"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr ""
-#: conf/email.py:22
+#: conf/email.py:24
#, fuzzy
msgid "Prefix for the email subject line"
msgstr " email 主題歡迎列"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:48
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
# must have extra space after in english
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "查看有關"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "刪除任何一個å•é¡Œæˆ–答案,åŠåŸ·è¡Œå…¶ä»–管ç†åŠŸèƒ½"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "無未解答å•é¡Œ"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "無未解答å•é¡Œ"
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "無未解答å•é¡Œ"
+
+#: 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "無未解答å•é¡Œ"
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:196
+#: conf/email.py:228
#, fuzzy
msgid "Allow only one account per email address"
msgstr "您的電å­éƒµä»¶åœ°å€"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr "簽入張貼å•é¡Œ"
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/external_keys.py:11
+msgid "Keys for external services"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr ""
-#: 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 ""
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -746,11 +789,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -758,137 +801,137 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
#, fuzzy
msgid "Twitter consumer key"
msgstr " Twitter 帳號:"
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
#, fuzzy
msgid "ident.ca consumer key"
msgstr " Twitter 帳號:"
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
msgid "Use LDAP authentication for the password login"
msgstr ""
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr ""
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr ""
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
#, fuzzy
msgid "Explain how to change LDAP password"
msgstr "帳號: 密碼已改變"
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
-#: 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 ""
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -896,228 +939,227 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "回答å•é¡Œ"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "更新標籤"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "相關標籤"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
#, fuzzy
msgid "Number of questions to list by default"
msgstr "å«æœ‰å•é¡Œçš„數目"
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "無未解答å•é¡Œ"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "帳號設置"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "回到首é "
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
#, fuzzy
msgid "Use license logo"
msgstr "社å€é€šç”¨èªž"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
+#: conf/markup.py:15
+msgid "Markup in posts"
msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr ""
-#: 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 "
@@ -1125,43 +1167,43 @@ msgid ""
"are heavily used in LaTeX input."
msgstr ""
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr ""
-#: 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 ""
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr ""
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1170,11 +1212,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1184,176 +1226,176 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
#, fuzzy
msgid "Upvote"
msgstr "投贊æˆç¥¨"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
#, fuzzy
msgid "Downvote"
msgstr "投åå°ç¥¨"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "回答å•é¡Œ"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "編輯任何答案"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
#, fuzzy
msgid "Flag offensive"
msgstr "標記惡æ„帖"
# todo - check if it's indeed plural
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
#, fuzzy
msgid "Leave comments"
msgstr "添加評論"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr ""
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
#, fuzzy
msgid "Delete questions and answers posted by others"
msgstr "刪除任何一個å•é¡Œæˆ–答案,åŠåŸ·è¡Œå…¶ä»–管ç†åŠŸèƒ½"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
#, fuzzy
msgid "Upload files"
msgstr "個人資料"
# close.html
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
#, fuzzy
msgid "Close own questions"
msgstr "çµæŸå•é¡Œ"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
#, fuzzy
msgid "Reopen own questions"
msgstr "é‡å•Ÿå•é¡Œ"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
#, fuzzy
msgid "Edit community wiki posts"
msgstr "編輯 wiki é¡žå•é¡Œ"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
#, fuzzy
msgid "View offensive flags"
msgstr "標記垃圾帖"
# must have extra space after in english
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
#, fuzzy
msgid "Close questions asked by others"
msgstr "查看有關"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr ""
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr ""
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr ""
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr ""
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
#, fuzzy
msgid "Gain for accepting best answer"
msgstr "標記最佳答案"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr ""
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr ""
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr ""
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr ""
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr ""
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1361,44 +1403,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1406,52 +1448,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "用戶資料"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "å•é¡Œæ¨™ç±¤"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "相似的å•é¡Œ"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr "點é¸è§€çœ‹æœ€è¿‘最少被更新的å•é¡Œ"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "標題"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1459,53 +1502,53 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
#, fuzzy
msgid "Site title for the Q&A forum"
msgstr "æ­¡è¿Ž"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr ""
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr ""
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
#, fuzzy
msgid "Feedback site URL"
msgstr "å•é¡Œå›žé¥‹"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1618,35 +1661,34 @@ msgstr ""
msgid "Foreground color for accepted answer"
msgstr ""
-#: conf/skin_general_settings.py:14
-#, fuzzy
-msgid "Skin and User Interface settings"
-msgstr "用戶åƒæ•¸çš„設置"
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
#, fuzzy
msgid "Q&A site logo"
msgstr "社å€é€šç”¨èªž"
-#: 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 ""
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1654,41 +1696,41 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:73
+#: 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:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:90
+#: 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 ""
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
#, fuzzy
msgid "Select skin"
msgstr "é¸æ“‡ç‰ˆæœ¬"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1700,11 +1742,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1713,21 +1755,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1736,21 +1778,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1759,19 +1801,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1782,133 +1824,160 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr ""
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "發布我的æå•åˆ°æˆ‘çš„ Twitter "
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
msgstr ""
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "External Services"
+msgstr "其他æœå‹™"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr "用戶åƒæ•¸çš„設置"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "修改電å­éƒµä»¶"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
msgid "Name for the Anonymous user"
msgstr ""
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
msgstr ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr ""
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr ""
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr ""
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr ""
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
msgstr ""
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr ""
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "完全é‡è¤‡çš„å•é¡Œ"
@@ -2017,196 +2086,201 @@ msgstr "已回答的å•é¡Œ"
msgid "Question has no accepted answers"
msgstr "已回答的å•é¡Œ"
-#: const/__init__.py:121
+#: const/__init__.py:122
#, fuzzy
msgid "asked a question"
msgstr "我è¦æå•"
-#: const/__init__.py:122
+#: const/__init__.py:123
#, fuzzy
msgid "answered a question"
msgstr "沒有回答的å•é¡Œ"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "è©•è«–å•é¡Œ"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "有評論回答"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "修改å•é¡Œ"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "修改回答"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "ç²çŽ"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "標記最佳答案"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "投贊æˆç¥¨"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "投åå°ç¥¨"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "撤銷投票"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "刪除å•é¡Œ"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "刪除回答"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "標記垃圾帖"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "更新標籤"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "收è—"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "完æˆå€‹äººæ‰€æœ‰è³‡æ–™"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "Email 更改已通知"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "沒有回答的å•é¡Œ"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "標記最佳答案"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr ""
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr ""
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr ""
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr ""
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[已關閉]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[已刪除]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "åˆå§‹ç‰ˆæœ¬"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "更新了標籤"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "特殊忽略標籤"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "個別é¸å®š"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "æ¯å¤©"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "æ¯æ˜ŸæœŸ"
-#: const/__init__.py:221
+#: const/__init__.py:226
#, fuzzy
msgid "no email"
msgstr "æ›´æ›é›»å­éƒµä»¶"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "昨天"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "大頭åƒ"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "第一å"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "第二å"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "第三å"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
#, fuzzy
msgid "Gravatar"
msgstr "大頭åƒ"
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2342,7 +2416,7 @@ 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:203
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
msgid "signin/"
msgstr ""
@@ -2480,74 +2554,74 @@ msgstr ""
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s 無效"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
#, fuzzy
msgid "Your new password saved"
msgstr "密碼已更改"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
#, fuzzy
msgid "Account recovery email sent"
msgstr "修改電å­éƒµä»¶"
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr "å°ä¸èµ·, 密碼ä¸åˆ, è«‹é‡æ–°è¼¸å…¥"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr "email 須經èªè­‰, åƒè€ƒ %(details_url)s"
-#: deps/django_authopenid/views.py:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "請設新密碼"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2556,108 +2630,34 @@ msgstr ""
msgid "Site"
msgstr "標題"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
#, fuzzy
msgid "Base Settings"
msgstr "帳號設置"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr ""
# todo take these out of settings
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "åªå…許上傳 '%(file_types)s' 類型的文件ï¼"
-#: 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
-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 ""
-
-#: 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 ""
-
-# book.html line 123 must be empty in english
-#: deps/livesettings/templates/livesettings/group_settings.html:68
-#, fuzzy
-msgid "Setting groups"
-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 ""
@@ -2685,15 +2685,15 @@ 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>"
+"<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>"
+"<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
@@ -2702,6 +2702,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "這å•é¡Œçš„第一個解答者"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "點é¸è§€çœ‹æœ€æ—©å•é¡Œ"
+
#: management/commands/send_email_alerts.py:411
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2751,89 +2766,100 @@ msgstr "你有å¯èƒ½æ”¶åˆ°ä¹‹å‰çœ‹éŽçš„連çµ, 此肇因於å³å°‡çµ‚止的技è
#: management/commands/send_email_alerts.py:490
#, fuzzy, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"go to %(email_settings_link)s to change frequency of email updates or "
+"%(admin_email)s administrator"
msgstr "請至 %(link)s 更改收信頻率或管ç†è€…çš„ %(email)s "
-#: management/commands/send_unanswered_question_reminders.py:80
+#: 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] ""
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "æ­¡è¿Žæå•! "
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "首次å¯ä»¥æŽ¥å—的答案"
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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
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 ""
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "ä¸èƒ½çµ¦è‡ªå·±çš„帖å­æŠ•ç¥¨"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:393
+#: models/__init__.py:407
#, fuzzy, python-format
msgid ">%(points)s points required to upvote"
msgstr "éœ€è¦ >%(points)s ç©åˆ†æ‰èƒ½æŠ•æ”¯æŒç¥¨ã€‚"
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "需è¦+%(points)sç©åˆ†æ‰èƒ½æŠ•åå°ç¥¨ã€‚"
-#: models/__init__.py:414
+#: models/__init__.py:428
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:415
+#: models/__init__.py:429
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
msgstr "上傳圖片åªé™æ–¼ç©åˆ† >%(min_rep)s 以上注冊用戶!"
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
msgid "blocked users cannot post"
msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:464
+#: models/__init__.py:478
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2843,56 +2869,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:493
+#: models/__init__.py:507
#, 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:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:562
+#: models/__init__.py:576
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:569
+#: models/__init__.py:583
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2901,262 +2927,252 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:655
+#: models/__init__.py:669
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:683
+#: models/__init__.py:697
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 ""
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:761
#, fuzzy
msgid "blocked users cannot flag posts"
msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:749
+#: models/__init__.py:763
#, fuzzy
msgid "suspended users cannot flag posts"
msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr ""
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr ""
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "這個投票已經éŽæ™‚,ä¸èƒ½æ’¤éŠ·ã€‚"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1327
+#: models/__init__.py:1341
#, fuzzy
msgid "in two days"
msgstr "登錄並回答該å•é¡Œ"
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "匿å者"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
"你好, \n"
" 論壇管ç†è€…"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
#, fuzzy
msgid "Suspended User"
msgstr "é€å‡ºäººç‚º"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
#, fuzzy
msgid "Registered User"
msgstr "註冊用戶"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(user_name)s karma 更動日誌"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "第二åçŽå‹µç´°ç¯€"
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "第三åçŽå‹µç´°ç¯€"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
+#: models/__init__.py:2195
#, fuzzy, python-format
msgid "Re: \"%(title)s\""
msgstr "æå•"
-#: models/__init__.py:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, fuzzy, python-format
msgid "Question: \"%(title)s\""
msgstr "æå•"
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, 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:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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 "這個å•é¡Œè¢«"
-
#: models/badges.py:129
#, fuzzy, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3429,54 +3445,65 @@ msgstr "專家"
msgid "Very active in one tag"
msgstr "æŸä¸€æ¨™ç±¤å¸¸å•Ÿç”¨"
-#: models/meta.py:112
+#: models/content.py:549
+#, fuzzy
+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
+#, fuzzy
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "這個å•é¡Œè¢«"
+
+#: 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/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:75
+#: models/question.py:66
#, fuzzy
msgid "\" and more"
msgstr "查看更多"
-#: models/question.py:452
-#, fuzzy
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "這個å•é¡Œè¢«"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s 已修改這個å•é¡Œ"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s è©•è«–å•é¡Œ"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s 評論回答"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s 評論回答"
@@ -3489,8 +3516,8 @@ msgstr ""
#: models/repute.py:153
#, 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 ""
#: models/repute.py:158
@@ -3545,6 +3572,84 @@ msgstr "æ¯å‘¨"
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/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
+msgid ""
+"Sincerely,\n"
+"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"
+"for any inconvenience"
+msgstr "如你肯定這訊æ¯è¢«èª¤é€, ä¸éœ€åšä»»ä½•å‹•ä½œ, 並忽略此信, éžå¸¸æŠ±æ­‰ \n"
+
+#: skins/default/templates/feedback_email.txt:2
+#: skins/old/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"
+
+#: 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."
+msgstr "如你肯定這訊æ¯è¢«èª¤é€, ä¸éœ€åšä»»ä½•å‹•ä½œ, 並忽略此信, éžå¸¸æŠ±æ­‰ \n"
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
#, fuzzy
msgid "no items in counter"
@@ -3722,132 +3827,114 @@ msgstr ""
msgid "Please sign in to vote"
msgstr "請由此進入: "
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "Q&A 論壇回饋"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "è¬è¬å›žé¥‹"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr "期待你的回饋"
-#: views/readers.py:131
+#: 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 個å•é¡Œ"
-#: views/readers.py:139
+#: views/readers.py:159
#, fuzzy, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
msgstr[0] "第 %(q_num)s 個å•é¡Œ"
-#: views/readers.py:177
+#: 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:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "票"
-
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "回答"
-
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "ç€è¦½"
-
-#: views/readers.py:440
+#: views/readers.py:415
#, fuzzy
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "這個å•é¡Œè¢«"
-#: views/users.py:224
+#: views/users.py:211
#, fuzzy
msgid "moderate this user"
msgstr "管ç†ç”¨æˆ¶"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "管ç†ç”¨æˆ¶"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "用戶資料"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "用戶概覽"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "最近活動"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "最近活動"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "其他用戶的回覆和評論"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "用戶資料 - 回應 "
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "用戶投票記錄"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "用戶資料 - 投票"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "用戶社å€ç©åˆ†"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "用戶資料 - ç©åˆ†"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "用戶收è—çš„å•é¡Œ"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "用戶資料 - 收è—"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "儲存修改"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "å–消電å­éƒµä»¶æ›´æ–°"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "email 訂閱設定"
-#: views/users.py:961
+#: views/users.py:974
#, fuzzy
msgid "profile - email subscriptions"
msgstr "用戶資料 - email 訂閱"
@@ -3906,6 +3993,409 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
+#, fuzzy
+#~ msgid "Sites"
+#~ msgstr "標題"
+
+#, fuzzy
+#~ msgid "Documentation"
+#~ msgstr "城市"
+
+#~ msgid "Change password"
+#~ msgstr "修改密碼"
+
+#, fuzzy
+#~ msgid "Log out"
+#~ msgstr "登出"
+
+#, fuzzy
+#~ msgid "Home"
+#~ msgstr "首é "
+
+# page title
+#, fuzzy
+#~ msgid "Edit Group Settings"
+#~ msgstr "修改å•é¡Œ"
+
+#, fuzzy
+#~ msgid "Please correct the error below."
+#~ msgid_plural "Please correct the errors below."
+#~ msgstr[0] "請修改下列錯誤: "
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "使用帳號密碼登錄"
+
+#, fuzzy
+#~ msgid "(or select another login method above)"
+#~ msgstr "è«‹é¸å–上數é¸é …"
+
+#, fuzzy
+#~ msgid "Sign in"
+#~ msgstr "註冊帳號"
+
+#~ msgid "Change email"
+#~ msgstr "æ›´æ›é›»å­éƒµä»¶"
+
+#~ msgid "Save your email address"
+#~ msgstr "儲存您的電å­éƒµä»¶åœ°å€"
+
+#~ msgid "change %(email)s info"
+#~ msgstr "æ›´æ› %(email)s é›»å­éƒµä»¶"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr "email å¿…è¦, è«‹åƒè€ƒ %(gravatar_faq_url)s"
+
+#~ msgid "Your new Email"
+#~ msgstr "æ–°é›»å­ä¿¡ç®±"
+
+#~ msgid "Your Email"
+#~ msgstr "é›»å­ä¿¡ç®±"
+
+#, fuzzy
+#~ msgid "Save Email"
+#~ msgstr "儲存電å­ä¿¡ç®±"
+
+#~ msgid "Cancel"
+#~ msgstr "å–消"
+
+#, fuzzy
+#~ msgid "Validate email"
+#~ msgstr "驗證電å­ä¿¡ç®±"
+
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr "驗證 %(email)s 資料或到 %(change_email_url)s"
+
+#~ msgid "Email not changed"
+#~ msgstr "é›»å­ä¿¡ç®±ä¸è®Š"
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr "如果你è¦åˆ° %(change_email_url)s 舊 %(email)s ä»ä¿ç•™"
+
+#, fuzzy
+#~ msgid "Email changed"
+#~ msgstr "é›»å­ä¿¡ç®±å·²è®Š"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "å¯ä»¥ç”¨é›»å­ä¿¡ç®± %(email)s "
+
+#~ msgid "Email verified"
+#~ msgstr "é©—è­‰éŽé›»å­ä¿¡ç®±"
+
+#~ msgid "thanks for verifying email"
+#~ msgstr "æ„Ÿè¬é©—證電å­ä¿¡ç®±"
+
+#~ msgid "email key not sent"
+#~ msgstr "é›»å­ä¿¡ç®± key 未傳é€"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr "%(change_link)s 未傳é€é›»å­ä¿¡ç®± key %(email)s"
+
+#, fuzzy
+#~ msgid "Registration"
+#~ 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 "Email address label"
+#~ msgstr "您的電å­éƒµä»¶åœ°å€"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "接收到更新的簡介"
+
+#~ 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 "新增帳號"
+
+#~ msgid "Logout"
+#~ msgstr "登出"
+
+#~ msgid "User login"
+#~ msgstr "用戶登錄"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " Your answer to %(title)s %(summary)s will be posted once you log "
+#~ "in\n"
+#~ " "
+#~ msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
+
+#, fuzzy
+#~ msgid ""
+#~ "Your question \n"
+#~ " %(title)s %(summary)s will be posted once you log in\n"
+#~ " "
+#~ msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please check your email and visit the enclosed link to re-connect to your "
+#~ "account"
+#~ msgstr "請輸入密碼"
+
+#, fuzzy
+#~ msgid "Please enter your <span>user name and password</span>, then sign in"
+#~ msgstr "使用帳號密碼登錄"
+
+#, fuzzy
+#~ msgid "Login or email"
+#~ msgstr "æ›´æ›é›»å­éƒµä»¶"
+
+#~ msgid "Password"
+#~ msgstr "密碼"
+
+#~ msgid "Login"
+#~ msgstr "登錄"
+
+#, fuzzy
+#~ msgid "New password"
+#~ msgstr "é‡è¨­å¯†ç¢¼"
+
+#, fuzzy
+#~ msgid "Please, retype"
+#~ msgstr "確èªå¯†ç¢¼"
+
+#, fuzzy
+#~ msgid "provider"
+#~ msgstr "打開"
+
+#, fuzzy
+#~ msgid "last used"
+#~ msgstr "上次活動時間"
+
+#~ msgid "delete"
+#~ msgstr "刪除"
+
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "å–消使用者"
+
+#, fuzzy
+#~ msgid "Still have trouble signing in?"
+#~ msgstr "還有其他å•é¡Œï¼Ÿ"
+
+#, fuzzy
+#~ msgid "Please, enter your email address below and obtain a new key"
+#~ msgstr "請輸入密碼"
+
+#, fuzzy
+#~ msgid "Please, enter your email address below to recover your account"
+#~ msgstr "請輸入密碼"
+
+#, fuzzy
+#~ msgid "recover your account via email"
+#~ msgstr "請設新密碼"
+
+#, fuzzy
+#~ msgid "Recover your account via email"
+#~ 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 "Signup"
+#~ msgstr "註冊帳號"
+
+#, fuzzy
+#~ msgid "Please register by clicking on any of the icons below"
+#~ msgstr "è«‹é¸å–上數é¸é …"
+
+#, fuzzy
+#~ msgid "or create a new user name and password here"
+#~ msgstr "新增帳號密碼"
+
+#, fuzzy
+#~ msgid "Create login name and password"
+#~ msgstr "新增帳號密碼"
+
+#~ msgid "Traditional signup info"
+#~ msgstr "傳統登入事項"
+
+#~ msgid ""
+#~ "Please read and type in the two words below to help us prevent automated "
+#~ "account creation."
+#~ msgstr "請讀å–並輸入下列的字, 以防止自動場產生的帳號. "
+
+#, fuzzy
+#~ msgid "Create Account"
+#~ msgstr "新增帳號"
+
+#~ msgid "or"
+#~ msgstr "或者"
+
+#, fuzzy
+#~ msgid "return to OpenID login"
+#~ msgstr "返回 OpenID 登錄"
+
+#, fuzzy
+#~ msgid "add avatar"
+#~ msgstr "大頭åƒ"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "修改標籤"
+
+#, fuzzy
+#~ msgid "Your current avatar: "
+#~ msgstr "帳號詳細: "
+
+#, fuzzy
+#~ msgid "change avatar"
+#~ msgstr "儲存修改"
+
+#, fuzzy
+#~ msgid "Upload"
+#~ msgstr "個人資料"
+
+#, fuzzy
+#~ msgid "delete avatar"
+#~ msgstr "刪除回答"
+
+#, fuzzy
+#~ msgid "Delete These"
+#~ msgstr "刪除回答"
+
+#~ msgid "answer permanent link"
+#~ msgstr "回答的連çµåœ°å€"
+
+#~ msgid "permanent link"
+#~ msgstr "永久連çµ"
+
+#~ msgid "edit"
+#~ msgstr "編輯"
+
+#~ msgid ""
+#~ "report as offensive (i.e containing spam, advertising, malicious text, "
+#~ "etc.)"
+#~ msgstr "檢舉該帖為「惡æ„帖ã€ï¼ˆå«å»£å‘Šã€äººèº«æ”»æ“Šã€æƒ¡æ„言論等)"
+
+#~ msgid "flag offensive"
+#~ msgstr "標記惡æ„帖"
+
+# todo please check this in chinese
+#~ msgid "undelete"
+#~ msgstr "æ¢å¾©"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "回答å•é¡Œ"
+
+#, fuzzy
+#~ msgid "mark this answer as correct (click again to undo)"
+#~ msgstr "標記為最佳答案(å†æ¬¡é»žæ“Šå–消æ“作)"
+
+#, fuzzy
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "這個答案已經被æå•ä½œè€…標記為最佳答案"
+
+#, fuzzy
+#~ msgid ""
+#~ "The question has been closed for the following reason <b>\"%(close_reason)"
+#~ "s\"</b> <i>by"
+#~ msgstr "å•é¡Œå·²å›  \"%(close_reason)s\" 的原因被關閉"
+
+#~ msgid "close date %(closed_at)s"
+#~ msgstr "關閉日期 %(closed_at)s "
+
+#, fuzzy
+#~ msgid "retag"
+#~ msgstr "更新了標籤"
+
+#~ msgid "reopen"
+#~ msgstr "打開"
+
+#~ msgid "close"
+#~ msgstr "關閉"
+
+#, 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 "Toggle the real time Markdown editor preview"
+#~ msgstr "切æ›ç‚º Markdown 編輯器的å³æ™‚é è¦½"
+
+#~ msgid "hide preview"
+#~ msgstr "ç¦ç”¨é è¦½"
+
+#~ msgid "Related tags"
+#~ msgstr "相關標籤"
+
+# book.html line 123 must be empty in english
+#~ msgid "Interesting tags"
+#~ msgstr "有趣的標籤"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "增加"
+
+#~ msgid "Ignored tags"
+#~ msgstr "忽視標籤"
+
+#, fuzzy
+#~ msgid "Display tag filter"
+#~ msgstr "é¸æ“‡ Email 標籤篩é¸"
+
#~ msgid "Sorry, could not find the page you requested."
#~ msgstr "å°ä¸èµ·ï¼Œæ²’有找到您è¦çš„é é¢ï¼"
@@ -3970,12 +4460,6 @@ msgstr ""
#~ msgid "Save edit"
#~ msgstr "儲存修改"
-#~ msgid "Cancel"
-#~ msgstr "å–消"
-
-#~ msgid "hide preview"
-#~ msgstr "ç¦ç”¨é è¦½"
-
#~ msgid "show preview"
#~ msgstr "顯示é è¦½"
@@ -4009,8 +4493,8 @@ 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"
+#~ "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"
@@ -4110,8 +4594,8 @@ 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 "
+#~ "- 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 "
@@ -4238,10 +4722,6 @@ msgstr ""
#~ "下方輸入æ„見. \n"
#~ " "
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "請輸入åˆæ³•é›»å­éƒµä»¶åœ°å€"
-
#~ msgid "(this field is required)"
#~ msgstr " (此欄ä¸èƒ½ç‚ºç©ºç™½)"
@@ -4249,14 +4729,6 @@ msgstr ""
#~ msgstr "é€å‡ºå•é¡Œå›žé¥‹"
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Hello, this is a %(site_title)s forum feedback message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ " 你好, 這是 %(site_title)s 回饋單\n"
-
-#, fuzzy
#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
#~ msgstr ""
#~ "你好, \n"
@@ -4267,28 +4739,21 @@ msgstr ""
#~ msgstr "發布我的æå•åˆ°æˆ‘çš„ Twitter "
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "çŽå‹µæ¦œ"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
-#~ msgid "previous"
-#~ msgstr "上一é "
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
-#~ msgid "current page"
-#~ msgstr "當å‰é "
+#~ msgid "current number of votes"
+#~ msgstr "當å‰ç¸½ç¥¨æ•¸"
#, fuzzy
-#~ msgid "page number %(num)s"
-#~ msgstr "第 %(num)s é "
-
-#~ msgid "next page"
-#~ msgstr "下一é "
-
-#~ msgid "posts per page"
-#~ msgstr "æ¯é é¡¯ç¤ºï¼š"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "%(user_name)s karma 更動日誌"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4315,9 +4780,6 @@ msgstr ""
#~ msgid "delete this comment"
#~ msgstr "刪除任何一個評論"
-#~ msgid "edit"
-#~ msgstr "編輯"
-
#~ msgid "add comment"
#~ msgstr "添加評論"
@@ -4333,32 +4795,43 @@ msgstr ""
#~ msgstr[0] "更多評論, 詳見 <strong>%(counter)s</strong>"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "%(user_name)s karma 更動日誌"
-# #, 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 "previous"
+#~ msgstr "上一é "
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "切æ›ç‚º Markdown 編輯器的å³æ™‚é è¦½"
+#~ msgid "current page"
+#~ msgstr "當å‰é "
+
+#, fuzzy
+#~ msgid "page number %(num)s"
+#~ msgstr "第 %(num)s é "
+
+#~ msgid "next page"
+#~ msgstr "下一é "
+
+#~ 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] "回應"
+
+#, 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 "第一個標記張貼"
@@ -4372,192 +4845,6 @@ msgstr ""
#~ msgid "Privacy policy"
#~ msgstr "éš±ç§æ”¿ç­–"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
-
-#~ msgid "current number of votes"
-#~ msgstr "當å‰ç¸½ç¥¨æ•¸"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "更新了標籤"
-
-#~ msgid "reopen"
-#~ msgstr "打開"
-
-#~ msgid "close"
-#~ msgstr "關閉"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr "檢舉該帖為「惡æ„帖ã€ï¼ˆå«å»£å‘Šã€äººèº«æ”»æ“Šã€æƒ¡æ„言論等)"
-
-#~ msgid "flag offensive"
-#~ msgstr "標記惡æ„帖"
-
-# todo please check this in chinese
-#~ msgid "undelete"
-#~ msgstr "æ¢å¾©"
-
-#~ msgid "delete"
-#~ msgstr "刪除"
-
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr "å•é¡Œå·²å›  \"%(close_reason)s\" 的原因被關閉"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "關閉日期 %(closed_at)s "
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer:\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers:\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)s 答案:"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "最先回答將顯示在最å‰é¢"
-
-#~ msgid "oldest answers"
-#~ msgstr "最先回答"
-
-#~ msgid "newest answers will be shown first"
-#~ msgstr "最晚回答將顯示在最å‰é¢"
-
-#~ msgid "newest answers"
-#~ msgstr "最近回答"
-
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "投票次數最多的將顯示在最å‰é¢"
-
-#~ msgid "popular answers"
-#~ msgstr "投票最多"
-
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "標記為最佳答案(å†æ¬¡é»žæ“Šå–消æ“作)"
-
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "這個答案已經被æå•ä½œè€…標記為最佳答案"
-
-#~ msgid "answer permanent link"
-#~ msgstr "回答的連çµåœ°å€"
-
-#~ msgid "permanent link"
-#~ msgstr "永久連çµ"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "回答å•é¡Œ"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "或者"
-
-#~ msgid "email"
-#~ msgstr "email"
-
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "若有新答案請知會我"
-
-#, fuzzy
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "若有新答案請知會我"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr "ä½ å¯å¾ž %(profile_url)s 調整 email 更新頻率"
-
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr "一旦é·å…¥ä½ å¯ä»¥è¨‚閱任何更新"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "登錄並回答該å•é¡Œ"
-
-#~ msgid "Your answer"
-#~ msgstr "您的回答"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "這å•é¡Œçš„第一個解答者"
-
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "ä½ å¯ä»¥åŒ¿å回應å†ç°½å…¥"
-
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "自å•è‡ªç­”"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "請答複å•é¡Œï¼Œè€Œéžè¨Žè«–。"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "回答å•é¡Œ"
-
-#~ msgid "Answer the question"
-#~ msgstr "回答å•é¡Œ"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "å•é¡Œæ¨™ç±¤"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "å–消電å­éƒµä»¶æ›´æ–°"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "訂閱最新å•é¡Œ"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "訂閱最新å•é¡Œ"
-
-#~ msgid "Question tags"
-#~ msgstr "å•é¡Œæ¨™ç±¤"
-
-#, fuzzy
-#~ msgid "question asked"
-#~ msgstr "æå•æ™‚é–“"
-
-#~ msgid "question was seen"
-#~ msgstr "ç›®å‰å•é¡Œ"
-
-#~ msgid "times"
-#~ msgstr "次"
-
-#~ msgid "last updated"
-#~ msgstr "最後更新時間"
-
-#~ msgid "Related questions"
-#~ msgstr "相似的å•é¡Œ"
-
# page title
#~ msgid "Edit question"
#~ msgstr "修改å•é¡Œ"
@@ -4618,9 +4905,17 @@ msgstr ""
#~ msgid "Please, subscribe for the following tags:"
#~ msgstr "å•é¡Œæ›¾å› ä¸‹è¿°åŽŸå› çµæŸ"
+#, fuzzy
+#~ msgid "Subscribe"
+#~ msgstr "使用標籤"
+
#~ msgid "Tag list"
#~ msgstr "標籤列表"
+#, fuzzy
+#~ msgid "Sort by &raquo;"
+#~ msgstr "查詢性質: "
+
#~ msgid "sorted alphabetically"
#~ msgstr "按å稱的字æ¯å…ˆå¾Œé †åºæŽ’åº"
@@ -4654,376 +4949,71 @@ msgstr ""
#~ msgid "Nothing found."
#~ msgstr "沒有找到相關數據。"
-#~ msgid "Change email"
-#~ msgstr "æ›´æ›é›»å­éƒµä»¶"
-
-#~ msgid "Save your email address"
-#~ msgstr "儲存您的電å­éƒµä»¶åœ°å€"
-
-#~ msgid "change %(email)s info"
-#~ msgstr "æ›´æ› %(email)s é›»å­éƒµä»¶"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "email å¿…è¦, è«‹åƒè€ƒ %(gravatar_faq_url)s"
-
-#~ msgid "Your new Email"
-#~ msgstr "æ–°é›»å­ä¿¡ç®±"
-
-#~ msgid "Your Email"
-#~ msgstr "é›»å­ä¿¡ç®±"
-
-#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "儲存電å­ä¿¡ç®±"
-
-#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "驗證電å­ä¿¡ç®±"
-
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr "驗證 %(email)s 資料或到 %(change_email_url)s"
-
-#~ msgid "Email not changed"
-#~ msgstr "é›»å­ä¿¡ç®±ä¸è®Š"
-
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr "如果你è¦åˆ° %(change_email_url)s 舊 %(email)s ä»ä¿ç•™"
-
-#, fuzzy
-#~ msgid "Email changed"
-#~ msgstr "é›»å­ä¿¡ç®±å·²è®Š"
-
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "å¯ä»¥ç”¨é›»å­ä¿¡ç®± %(email)s "
-
-#~ msgid "Email verified"
-#~ msgstr "é©—è­‰éŽé›»å­ä¿¡ç®±"
-
-#~ msgid "thanks for verifying email"
-#~ msgstr "æ„Ÿè¬é©—證電å­ä¿¡ç®±"
-
-#~ msgid "email key not sent"
-#~ msgstr "é›»å­ä¿¡ç®± key 未傳é€"
-
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr "%(change_link)s 未傳é€é›»å­ä¿¡ç®± key %(email)s"
-
-#, fuzzy
-#~ msgid "Registration"
-#~ 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 "Email address label"
-#~ msgstr "您的電å­éƒµä»¶åœ°å€"
-
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "接收到更新的簡介"
-
-#~ 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 "新增帳號"
-
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "æ„Ÿè¬ä½ åŠ å…¥æˆ‘們的 Q&A 論壇"
-
-#~ msgid "Your account details are:"
-#~ msgstr "帳號詳細: "
-
-#, fuzzy
-#~ msgid "Username:"
-#~ msgstr "您的大å"
-
-#~ msgid "Password:"
-#~ msgstr "密碼: "
-
-#~ msgid "Please sign in here:"
-#~ msgstr "請由此進入: "
-
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr ""
-#~ "你好, \n"
-#~ " 論壇管ç†è€…"
-
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "æ­¡è¿Ž"
-
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr "è«‹ä¾ä¸‹åˆ—指引使用論壇: "
-
-#~ msgid "Following the link above will help us verify your email address."
-#~ msgstr "è«‹ä¾ä¸Šåˆ—指引èªè­‰é›»å­éƒµä»¶åœ°å€"
-
-#, 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 "如你肯定這訊æ¯è¢«èª¤é€, ä¸éœ€åšä»»ä½•å‹•ä½œ, 並忽略此信, éžå¸¸æŠ±æ­‰ \n"
-
-#~ msgid "Logout"
-#~ msgstr "登出"
-
-#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "è«‹é¸å–上數é¸é …"
-
-#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "註冊帳號"
-
-#~ msgid "User login"
-#~ msgstr "用戶登錄"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
-
-#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "使用帳號密碼登錄"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "æ›´æ›é›»å­éƒµä»¶"
-
-#~ msgid "Password"
-#~ msgstr "密碼"
-
-#~ msgid "Login"
-#~ msgstr "登錄"
-
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "é‡è¨­å¯†ç¢¼"
-
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "確èªå¯†ç¢¼"
-
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "打開"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "上次活動時間"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "å–消使用者"
-
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "還有其他å•é¡Œï¼Ÿ"
-
-#, fuzzy
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "請輸入密碼"
-
-#, fuzzy
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr "請輸入密碼"
-
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "請設新密碼"
-
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ 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 "Signup"
-#~ msgstr "註冊帳號"
-
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "è«‹é¸å–上數é¸é …"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "新增帳號密碼"
-
-#, fuzzy
-#~ msgid "Create login name and password"
-#~ msgstr "新增帳號密碼"
+#~ msgid "with %(author_name)s's contributions"
+#~ msgstr "%(author_name)s çš„è²¢ç»"
-#~ msgid "Traditional signup info"
-#~ msgstr "傳統登入事項"
+#~ msgid "Search tips:"
+#~ msgstr "æœå°‹æŠ€å·§: "
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr "請讀å–並輸入下列的字, 以防止自動場產生的帳號. "
+#~ msgid "reset author"
+#~ msgstr "é‡è¨­ä½œè€…"
#, fuzzy
-#~ msgid "Create Account"
-#~ msgstr "新增帳號"
-
-#~ msgid "or"
+#~ msgid " or "
#~ msgstr "或者"
-#, fuzzy
-#~ msgid "return to OpenID login"
-#~ msgstr "返回 OpenID 登錄"
-
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "大頭åƒ"
+#~ msgid "reset tags"
+#~ msgstr "é‡è¨­æ¨™ç±¤"
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "修改標籤"
+#~ msgid "start over"
+#~ msgstr "é‡æ–°é–‹å§‹"
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "帳號詳細: "
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
+#~ msgstr " - 使用更多的標籤更改查詢找資料"
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "儲存修改"
+#~ msgid "Search tip:"
+#~ msgstr "查詢技巧: "
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "個人資料"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "增加標籤和查詢加強æœå°‹"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "刪除回答"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "無未解答å•é¡Œ"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "刪除回答"
-
-#~ msgid "answer tips"
-#~ msgstr "æå•æŠ€å·§"
-
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "請回應相關答案"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "盡é‡ç­”覆å•é¡Œï¼Œè€Œéžè¨Žè«–。"
-
-#~ msgid "please try to provide details"
-#~ msgstr "請詳細æ述細節"
-
-#~ msgid "be clear and concise"
-#~ msgstr "簡單扼è¦"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "查看常見å•é¡Œ"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown 快速åƒè€ƒ"
+#~ msgid "No questions here. "
+#~ msgstr "無被收è—å•é¡Œ"
#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*斜體* 或者 _斜體_"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**加粗** 或者 __加粗__ "
-
-#~ msgid "link"
-#~ msgstr "è¯çµ"
-
-#~ msgid "text"
-#~ msgstr "文字"
-
-#~ msgid "image"
-#~ msgstr "圖片"
+#~ msgid "Please follow some questions or follow some users."
+#~ msgstr "一旦開始觀看請記錄å•é¡Œ"
-#~ msgid "numbered list:"
-#~ msgstr "有åºåˆ—表:"
+#~ msgid "You can expand your search by "
+#~ msgstr "廣泛æœå°‹å¯ç”±"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "支æ´åŸºæœ¬çš„HTML標籤"
+#~ msgid "resetting author"
+#~ msgstr "é‡è¨­ä½œè€…"
-#~ msgid "learn more about Markdown"
-#~ msgstr "有關 Markdown 詳細說明"
+# book.html line 123 must be empty in english
+#~ msgid "resetting tags"
+#~ msgstr "é‡è¨­æ¨™ç±¤"
-#~ msgid "login to post question info"
-#~ msgstr "簽入張貼å•é¡Œ"
+#~ msgid "starting over"
+#~ msgstr "é‡æ–°é–‹å§‹"
#, fuzzy
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "%(username)s 已註冊, è«‹é¸ç”¨ %(provider)s 其他帳號 \n"
-#~ " åŒæ™‚也需è¦é›»å­ä¿¡ç®±, è«‹åƒè€ƒ %(gravatar_faq_url)s\n"
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "æ­¡è¿Žæå•! "
-#~ msgid "Login/signup to post your question"
-#~ msgstr "請 Login/signup 進去張貼"
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "找ä¸åˆ°çµæžœ? "
-#~ msgid "Ask your question"
+#~ msgid "Please, post your question!"
#~ msgstr "ç¾åœ¨æå•"
+#~ 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"
@@ -5041,156 +5031,130 @@ msgstr ""
#~ "each"
#~ msgstr "最多 5 個標籤,æ¯å€‹æ¨™ç±¤é•·åº¦å°æ–¼ %(tag_count)s 個字元。"
-# 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 "questions"
-#~ msgstr "å•é¡Œ"
+#~ msgid ""
+#~ "\n"
+#~ " %(counter)s Answer\n"
+#~ " "
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "\n"
+#~ " %(counter)s 答案:"
-#~ msgid "users"
-#~ msgstr "用戶"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "最先回答將顯示在最å‰é¢"
-#~ msgid "badges"
-#~ msgstr "çŽå‹µæ¦œ"
+#~ msgid "oldest answers"
+#~ msgstr "最先回答"
-#~ msgid "ask a question"
-#~ msgstr "我è¦æå•"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "最晚回答將顯示在最å‰é¢"
-#~ msgid "logout"
-#~ msgstr "登出"
+#~ msgid "newest answers"
+#~ msgstr "最近回答"
-#~ msgid "login"
-#~ msgstr "登錄"
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "投票次數最多的將顯示在最å‰é¢"
-# book.html line 123 must be empty in english
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "é‡è¨­æ¨™ç±¤"
+#~ msgid "popular answers"
+#~ msgstr "投票最多"
-#~ msgid "search"
-#~ msgstr "æœç´¢"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "回答å•é¡Œ"
-#~ msgid "question tips"
-#~ msgstr "æå•æŠ€å·§"
+#, fuzzy
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "登錄並回答該å•é¡Œ"
-#~ msgid "please ask a relevant question"
-#~ msgstr "我è¦æå•"
+#~ msgid "Your answer"
+#~ msgstr "您的回答"
-#~ msgid "please try provide enough details"
-#~ msgstr "請詳細æ述您的å•é¡Œã€‚"
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "這å•é¡Œçš„第一個解答者"
-# book.html line 123 must be empty in english
-#~ msgid "Interesting tags"
-#~ msgstr "有趣的標籤"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "ä½ å¯ä»¥åŒ¿å回應å†ç°½å…¥"
-#~ msgid "Add"
-#~ msgstr "增加"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "自å•è‡ªç­”"
-#~ msgid "Ignored tags"
-#~ msgstr "忽視標籤"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "請答複å•é¡Œï¼Œè€Œéžè¨Žè«–。"
#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "é¸æ“‡ Email 標籤篩é¸"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "找ä¸åˆ°çµæžœ? "
-
-#~ msgid "Please, post your question!"
-#~ msgstr "ç¾åœ¨æå•"
-
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "訂閱最新å•é¡Œ"
-
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "%(author_name)s çš„è²¢ç»"
-
-#~ msgid "Search tips:"
-#~ msgstr "æœå°‹æŠ€å·§: "
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "登錄並回答該å•é¡Œ"
-#~ msgid "reset author"
-#~ msgstr "é‡è¨­ä½œè€…"
+#~ msgid "Answer the question"
+#~ msgstr "回答å•é¡Œ"
#, fuzzy
-#~ msgid " or "
+#~ msgid " or"
#~ msgstr "或者"
-#~ msgid "reset tags"
-#~ msgstr "é‡è¨­æ¨™ç±¤"
+#~ msgid "email"
+#~ msgstr "email"
-#~ msgid "start over"
-#~ msgstr "é‡æ–°é–‹å§‹"
+#, fuzzy
+#~ msgid "Question tools"
+#~ msgstr "å•é¡Œæ¨™ç±¤"
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr " - 使用更多的標籤更改查詢找資料"
+#, fuzzy
+#~ msgid "click to unfollow this question"
+#~ msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
-#~ msgid "Search tip:"
-#~ msgstr "查詢技巧: "
+#, fuzzy
+#~ msgid "click to follow this question"
+#~ msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "增加標籤和查詢加強æœå°‹"
+#, fuzzy
+#~ msgid "email the updates"
+#~ msgstr "å–消電å­éƒµä»¶æ›´æ–°"
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "無未解答å•é¡Œ"
+#, fuzzy
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "訂閱最新å•é¡Œ"
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "無被收è—å•é¡Œ"
+#~ msgid "subsribe to rss feed"
+#~ msgstr "訂閱最新å•é¡Œ"
#, fuzzy
-#~ msgid "Please star (bookmark) some questions or follow some users."
-#~ msgstr "一旦開始觀看請記錄å•é¡Œ"
+#~ msgid "question asked"
+#~ msgstr "æå•æ™‚é–“"
-#~ msgid "You can expand your search by "
-#~ msgstr "廣泛æœå°‹å¯ç”±"
+#~ msgid "question was seen"
+#~ msgstr "ç›®å‰å•é¡Œ"
-#~ msgid "resetting author"
-#~ msgstr "é‡è¨­ä½œè€…"
+#~ msgid "times"
+#~ msgstr "次"
-# book.html line 123 must be empty in english
-#~ msgid "resetting tags"
-#~ msgstr "é‡è¨­æ¨™ç±¤"
+#~ msgid "last updated"
+#~ msgstr "最後更新時間"
-#~ msgid "starting over"
-#~ msgstr "é‡æ–°é–‹å§‹"
+#~ msgid "Related questions"
+#~ msgstr "相似的å•é¡Œ"
#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "æ­¡è¿Žæå•! "
-
-#~ msgid "Contributors"
-#~ msgstr "è²¢ç»è€…"
-
-#~ msgid "Related tags"
-#~ msgstr "相關標籤"
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "若有新答案請知會我"
-#~ msgid "In:"
-#~ msgstr "In:"
+#~ msgid "Notify me weekly when there are any new answers"
+#~ msgstr "若有新答案請知會我"
#, fuzzy
-#~ msgid "see unanswered questions"
-#~ msgstr "沒有回答的å•é¡Œ"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "若有新答案請知會我"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "用戶收è—çš„å•é¡Œ"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr "ä½ å¯å¾ž %(profile_url)s 調整 email 更新頻率"
-#~ msgid "Sort by:"
-#~ msgstr "查詢性質: "
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
+#~ msgstr "一旦é·å…¥ä½ å¯ä»¥è¨‚閱任何更新"
#, fuzzy
#~ msgid "%(username)s's profile"
@@ -5237,6 +5201,10 @@ msgstr ""
#~ msgstr "å•é¡Œ"
#, fuzzy
+#~ msgid "flagged items (%(flag_count)s)"
+#~ msgstr "最多åªèƒ½æœ‰%(tag_count)s個標籤"
+
+#, fuzzy
#~ msgid "select:"
#~ msgstr "刪除"
@@ -5295,6 +5263,14 @@ msgstr ""
#~ msgid "moderation"
#~ msgstr "城市"
+#, fuzzy
+#~ msgid "%(username)s's current status is \"%(status)s\""
+#~ msgstr "%(user_name)s karma 更動日誌"
+
+#, fuzzy
+#~ msgid "User status changed"
+#~ msgstr "用戶社å€ç©åˆ†"
+
#~ msgid "Save"
#~ msgstr "儲存"
@@ -5302,6 +5278,13 @@ msgstr ""
#~ msgid "User reputation changed"
#~ msgstr "用戶社å€ç©åˆ†"
+#~ msgid "Add"
+#~ msgstr "增加"
+
+#, fuzzy
+#~ msgid "Send message to %(username)s"
+#~ msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
+
#, fuzzy
#~ msgid "Message sent"
#~ msgstr "訊æ¯"
@@ -5401,6 +5384,218 @@ msgstr ""
#~ msgid "votes"
#~ msgstr "投票"
+#~ msgid "answer tips"
+#~ msgstr "æå•æŠ€å·§"
+
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr "請回應相關答案"
+
+#~ msgid "try to give an answer, rather than engage into a discussion"
+#~ msgstr "盡é‡ç­”覆å•é¡Œï¼Œè€Œéžè¨Žè«–。"
+
+#~ msgid "please try to provide details"
+#~ msgstr "請詳細æ述細節"
+
+#~ 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 "圖片"
+
+#~ msgid "numbered list:"
+#~ msgstr "有åºåˆ—表:"
+
+#~ msgid "basic HTML tags are also supported"
+#~ msgstr "支æ´åŸºæœ¬çš„HTML標籤"
+
+#~ msgid "learn more about Markdown"
+#~ msgstr "有關 Markdown 詳細說明"
+
+#~ msgid "ask a question"
+#~ msgstr "我è¦æå•"
+
+#~ msgid "login to post question info"
+#~ msgstr "簽入張貼å•é¡Œ"
+
+#, fuzzy
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "%(username)s 已註冊, è«‹é¸ç”¨ %(provider)s 其他帳號 \n"
+#~ " åŒæ™‚也需è¦é›»å­ä¿¡ç®±, è«‹åƒè€ƒ %(gravatar_faq_url)s\n"
+
+#~ 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 "請詳細æ述您的å•é¡Œã€‚"
+
+#, fuzzy
+#~ msgid "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "ç€è¦½"
+
+#, fuzzy
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "回答"
+
+#, fuzzy
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "票"
+
+#, fuzzy
+#~ msgid "see unanswered questions"
+#~ msgstr "沒有回答的å•é¡Œ"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "用戶收è—çš„å•é¡Œ"
+
+#, fuzzy
+#~ msgid "badges:"
+#~ msgstr "çŽå‹µæ¦œ"
+
+#~ msgid "logout"
+#~ msgstr "登出"
+
+#~ msgid "login"
+#~ msgstr "登錄"
+
+# book.html line 123 must be empty in english
+#, fuzzy
+#~ msgid "settings"
+#~ msgstr "é‡è¨­æ¨™ç±¤"
+
+#, fuzzy
+#~ msgid "(please enter a valid email)"
+#~ msgstr "請輸入åˆæ³•é›»å­éƒµä»¶åœ°å€"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr "å•é¡Œå·²å›  \"%(close_reason)s\" 的原因被關閉"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " %(counter)s Answer:\n"
+#~ " "
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers:\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "\n"
+#~ " %(counter)s 答案:"
+
+#~ msgid "mark this answer as favorite (click again to undo)"
+#~ msgstr "標記為最佳答案(å†æ¬¡é»žæ“Šå–消æ“作)"
+
+#~ msgid "Question tags"
+#~ msgstr "å•é¡Œæ¨™ç±¤"
+
+#~ msgid "questions"
+#~ msgstr "å•é¡Œ"
+
+#~ msgid "search"
+#~ msgstr "æœç´¢"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr "一旦開始觀看請記錄å•é¡Œ"
+
+#~ msgid "In:"
+#~ msgstr "In:"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "所有å•é¡Œ"
+
+#~ msgid "Sort by:"
+#~ msgstr "查詢性質: "
+
+#, fuzzy
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "é›»å­éƒµä»¶ï¼ˆ<i>用於頭åƒé¡¯ç¤ºæœå‹™</i>)"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "標題"
+
+#, fuzzy
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "用戶åƒæ•¸çš„設置"
+
+# book.html line 123 must be empty in english
+#, fuzzy
+#~ msgid "Setting groups"
+#~ msgstr "é‡è¨­æ¨™ç±¤"
+
# index.html
#~ msgid "community wiki"
#~ msgstr "ç¤¾å€ Wiki"
@@ -6043,8 +6238,8 @@ msgstr ""
#~ msgstr "傳統簽入信æ¯"
#~ msgid ""
-#~ "how to login with password through external login website or use %"
-#~ "(feedback_url)s"
+#~ "how to login with password through external login website or use "
+#~ "%(feedback_url)s"
#~ msgstr "如何使用外在帳號或使用 %(feedback_url)s 的帳號åŠå¯†ç¢¼"
#~ msgid "Send new password"
@@ -6145,9 +6340,6 @@ msgstr ""
#~ msgid "details on personal information policies"
#~ msgstr "使用者æ供信æ¯"
-#~ msgid "Other Services"
-#~ msgstr "其他æœå‹™"
-
#~ msgid "details on sharing data with third parties"
#~ msgstr "共享資料"
diff --git a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.mo b/askbot/locale/zh-tw/LC_MESSAGES/djangojs.mo
index 496607ae..ef4ebd4b 100644
--- a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.mo
+++ 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 7e7b0ccb..a8e1e67e 100644
--- a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/zh-tw/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-10-08 02:50-0500\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"
@@ -17,49 +17,328 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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
+msgid "insufficient privilege"
+msgstr "權é™ä¸è¶³"
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "ä¸èƒ½è”½æŽƒè‡ªç"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr "請先登錄"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "確定è¦æ­¸é¡žè©²å¸–為廣告ã€äººèº«æ”»æ“Šã€æƒ¡æ„言論嗎?"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr "匿å用戶ä¸èƒ½æ“作"
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "確定刪除"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "匿å用戶ä¸èƒ½åˆªé™¤æˆ–æ¢å¾©å¸–å­"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "æ“作æˆåŠŸï¼è©²å¸–å­å·²è¢«æ¢è¤‡ã€‚"
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr "æ“作æˆåŠŸï¼è©²å¸–å­å·²åˆªé™¤ã€‚"
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr "添加評論"
+
+#: skins/common/media/js/post.js:960
+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 ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+
+#: 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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr "ç²—é«”"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "斜體"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "超連接"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "引用"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "代碼"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "圖片"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "數字編號列表"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "項目符號列表"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "標題"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "水平線"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "撤銷"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "é‡åš"
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+"<b>輸入圖片地å€</b></p><p>示例:<br />http://www.example.com/image.jpg \"我"
+"的截圖\""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+"<b>輸入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的網站\"</"
+"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 ""
+
+#: 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_CN/LC_MESSAGES/django.mo b/askbot/locale/zh_CN/LC_MESSAGES/django.mo
index 59fb0403..52b34c68 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 cd4d2406..07b4b386 100644
--- a/askbot/locale/zh_CN/LC_MESSAGES/django.po
+++ b/askbot/locale/zh_CN/LC_MESSAGES/django.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
"X-Translated-Using: django-rosetta 0.5.6\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -129,19 +129,19 @@ msgstr ""
msgid "Enter number of points to add or subtract"
msgstr "输入è¦æ·»åŠ æˆ–å‡åŽ»çš„分数"
-#: forms.py:341 const/__init__.py:245
+#: forms.py:341 const/__init__.py:250
msgid "approved"
msgstr "已认è¯"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:342 const/__init__.py:251
msgid "watched"
msgstr "查看"
-#: forms.py:343 const/__init__.py:247
+#: forms.py:343 const/__init__.py:252
msgid "suspended"
msgstr "æš‚åœä½¿ç”¨"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:344 const/__init__.py:253
msgid "blocked"
msgstr "冻结"
@@ -150,7 +150,7 @@ msgstr "冻结"
msgid "administrator"
msgstr "网站管ç†å‘˜"
-#: forms.py:347 const/__init__.py:244
+#: forms.py:347 const/__init__.py:249
msgid "moderator"
msgstr "版主"
@@ -195,482 +195,528 @@ msgid "Message text"
msgstr "ä¿¡æ¯æ–‡æœ¬"
#: forms.py:542
-msgid "Your name:"
+#, fuzzy
+msgid "Your name (optional):"
msgstr "用户å"
#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "电å­é‚®ä»¶"
+#, fuzzy
+msgid "Email:"
+msgstr "邮件"
-#: forms.py:544
+#: forms.py:545
msgid "Your message:"
msgstr "ä½ çš„ä¿¡æ¯:"
-#: forms.py:581
+#: 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
msgid "ask anonymously"
msgstr "匿å"
-#: forms.py:583
+#: forms.py:613
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:743
+#: forms.py:773
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:747
+#: forms.py:777
msgid "reveal identity"
msgstr ""
-#: forms.py:805
+#: forms.py:835
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:818
+#: 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:856
+#: forms.py:886
#, fuzzy
msgid "this email will be linked to gravatar"
msgstr "ä¸ä¼šå…¬å¼€ï¼Œç”¨äºŽå¤´åƒæ˜¾ç¤ºæœåŠ¡"
-#: forms.py:863
+#: forms.py:893
msgid "Real name"
msgstr "真实姓å"
-#: forms.py:870
+#: forms.py:900
msgid "Website"
msgstr "个人网站"
-#: forms.py:877
+#: forms.py:907
msgid "City"
msgstr ""
-#: forms.py:886
+#: forms.py:916
#, fuzzy
msgid "Show country"
msgstr "æ–°å¸å·"
-#: forms.py:891
+#: forms.py:921
msgid "Date of birth"
msgstr "生日"
-#: forms.py:892
+#: forms.py:922
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "ä¸ä¼šå…¬å¼€ï¼Œåªä¼šæ˜¾ç¤ºæ‚¨çš„年龄,格å¼ä¸ºï¼šYYYY-MM-DD"
-#: forms.py:898
+#: forms.py:928
msgid "Profile"
msgstr "个人简介"
-#: forms.py:907
+#: forms.py:937
msgid "Screen name"
msgstr "昵称"
-#: forms.py:938 forms.py:939
+#: forms.py:968 forms.py:969
msgid "this email has already been registered, please use another one"
msgstr "该电å­é‚®ä»¶å·²è¢«æ³¨å†Œï¼Œè¯·é€‰æ‹©å¦ä¸€ä¸ªå†è¯•ã€‚"
-#: forms.py:946
+#: forms.py:976
msgid "Choose email tag filter"
msgstr "选择邮件标签过æ¥"
-#: forms.py:993
+#: forms.py:1023
msgid "Asked by me"
msgstr "我的æé—®"
-#: forms.py:996
+#: forms.py:1026
msgid "Answered by me"
msgstr "我的回答"
-#: forms.py:999
+#: forms.py:1029
msgid "Individually selected"
msgstr "个人选项"
-#: forms.py:1002
+#: forms.py:1032
msgid "Entire forum (tag filtered)"
msgstr "整个论å›(标签过滤)"
-#: forms.py:1006
+#: forms.py:1036
msgid "Comments and posts mentioning me"
msgstr "留言并æ交我"
-#: forms.py:1085
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "试一试"
-#: forms.py:1086
+#: forms.py:1116
msgid "no community email please, thanks"
msgstr "ä¸éœ€è¦é‚®ä»¶ï¼Œè°¢è°¢"
-#: forms.py:1090
+#: forms.py:1120
msgid "please choose one of the options above"
msgstr "请从以上选项中选择一项"
# footer.html
-#: urls.py:53
+#: urls.py:57
msgid "about/"
msgstr "关于本站/"
-#: urls.py:54
+#: urls.py:58
msgid "faq/"
msgstr "常è§é—®é¢˜/"
-#: urls.py:55
+#: urls.py:59
msgid "privacy/"
msgstr "éšç§æ”¿ç­–/"
-#: urls.py:57 urls.py:62
+#: urls.py:61 urls.py:66
msgid "answers/"
msgstr "回答/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:61 urls.py:87 urls.py:207
msgid "edit/"
msgstr "编辑/"
-#: urls.py:62 urls.py:113
+#: urls.py:66 urls.py:117
msgid "revisions/"
msgstr "版本/"
-#: 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: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/"
msgstr "问题/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "æé—®/"
-#: urls.py:88
+#: urls.py:92
msgid "retag/"
msgstr "修改标签/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "关闭/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "打开/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "回答/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "票/"
-#: urls.py:149
+#: urls.py:153
msgid "tags/"
msgstr "标签/"
-#: urls.py:192
+#: urls.py:196
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
msgid "users/"
msgstr "用户/"
-#: urls.py:210
+#: urls.py:214
#, fuzzy
msgid "subscriptions/"
msgstr "订阅"
-#: urls.py:222
+#: urls.py:226
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:227 urls.py:232
+#: urls.py:231 urls.py:236
msgid "badges/"
msgstr "奖牌榜/"
-#: urls.py:237
+#: urls.py:241
msgid "messages/"
msgstr "ä¿¡æ¯/"
-#: urls.py:237
+#: urls.py:241
msgid "markread/"
msgstr "标记已读/"
-#: urls.py:253
+#: urls.py:257
msgid "upload/"
msgstr "上传/"
-#: urls.py:254
+#: urls.py:258
msgid "feedback/"
msgstr "问题å馈/"
-#: urls.py:296
+#: urls.py:300
msgid "question/"
msgstr "æé—®/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:307 setup_templates/settings.py:206
msgid "account/"
msgstr "账户/"
-#: conf/badges.py:12
+#: 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 ""
+
+#: conf/badges.py:13
msgid "Badge settings"
msgstr "设置"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
msgstr ""
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr "è€å¸ˆ:答案的最å°æŽ¨è票数"
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
msgstr "好答案:答案的最å°æŽ¨è票数"
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
msgstr "良好的答案:答案的最å°æŽ¨è票数"
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
msgstr "æžå¥½çš„答案:答案的最å°æŽ¨è票数"
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
msgstr "好问题:问题的最å°æŽ¨è票数"
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
msgstr "良好的问题:问题的最å°æŽ¨è票数"
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
msgstr "优秀的问题:问题的最å°æŽ¨è票数"
-#: conf/badges.py:102
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr "å—欢迎问题:最å°æµè§ˆæ¬¡æ•°"
-#: conf/badges.py:111
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
msgstr "关注的问题:最å°æµè§ˆæ¬¡æ•°"
# close.html
-#: conf/badges.py:120
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
msgstr "æžå¥½çš„问题:最å°æµè§ˆæ¬¡æ•°"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr "自学者:答案最少推è票数"
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
msgstr "居民义务:最少投票数"
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
msgstr ""
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
msgstr "专家:最少推è票数"
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
msgstr ""
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
msgstr ""
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
msgstr "è”åˆç¼–辑:最å°ç¼–辑数"
-#: conf/badges.py:192
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
msgstr "收è—问题:最少星数"
-#: conf/badges.py:201
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
msgstr "é‡è¦é—®é¢˜:最少星数"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
msgstr ""
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
msgstr ""
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
msgstr ""
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
msgstr "邮件åŠé‚®ä»¶æ醒设置"
-#: conf/email.py:22
+#: conf/email.py:24
msgid "Prefix for the email subject line"
msgstr "邮件主题å‰ç¼€"
-#: conf/email.py:24
+#: 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:36
+#: conf/email.py:38
msgid "Maximum number of news entries in an email alert"
msgstr "邮件æ醒的最大新问题数"
-#: conf/email.py:64
+#: conf/email.py:48
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "默认新问题通知频率"
-#: conf/email.py:66
+#: conf/email.py:50
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:62
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "默认新问题通知频率"
-#: conf/email.py:80
+#: conf/email.py:64
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:92
+#: conf/email.py:76
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "默认新问题通知频率"
-#: conf/email.py:94
+#: conf/email.py:78
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:106
+#: conf/email.py:90
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:109
+#: conf/email.py:93
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:105
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:124
+#: conf/email.py:108
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:135
+#: conf/email.py:119
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "没有未回答的问题"
-#: conf/email.py:137
+#: 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) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:151
+#: conf/email.py:134
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "没有未回答的问题"
-#: conf/email.py:162
+#: conf/email.py:145
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:174
+#: conf/email.py:157
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:186
+#: conf/email.py:168
+#, fuzzy
+msgid "Send periodic reminders to accept the best answer"
+msgstr "没有未回答的问题"
+
+#: 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:183
+#, fuzzy
+msgid "Days before starting to send reminders to accept an answer"
+msgstr "没有未回答的问题"
+
+#: conf/email.py:194
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:206
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:218
msgid "Require email verification before allowing to post"
msgstr "在æ交å‰éœ€è¦é‚®ä»¶ç¡®è®¤"
-#: conf/email.py:187
+#: conf/email.py:219
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr "通过å‘é€ç¡®è®¤é‚®ä»¶å®Œæˆé‚®ä»¶æ¿€æ´»ç¡®è®¤"
-#: conf/email.py:196
+#: conf/email.py:228
msgid "Allow only one account per email address"
msgstr "æ¯ä¸ªé‚®ä»¶åœ°å€åªå…许关è”一个账户"
-#: conf/email.py:205
+#: conf/email.py:237
msgid "Fake email for anonymous user"
msgstr "匿å用户邮件"
-#: conf/email.py:206
+#: conf/email.py:238
msgid "Use this setting to control gravatar for email-less user"
msgstr "使用这个设置没有邮件的用户图åƒ"
-#: conf/email.py:215
+#: conf/email.py:247
#, fuzzy
msgid "Allow posting questions by email"
msgstr "登录并æ交问题"
-#: conf/email.py:217
+#: conf/email.py:249
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:260
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:230
+#: conf/email.py:262
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
-msgstr "链接到其他æœåŠ¡ç½‘站的keys,åƒFackbookç­‰"
+#: conf/external_keys.py:11
+#, fuzzy
+msgid "Keys for external services"
+msgstr "LDAPæœåŠ¡URL"
-#: conf/external_keys.py:18
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Google网站确认key"
-#: conf/external_keys.py:20
+#: conf/external_keys.py:21
#, fuzzy, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
@@ -680,32 +726,32 @@ msgstr ""
"site</a>\n"
"以帮助google索引你的网站"
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Google Analytics key"
-#: conf/external_keys.py:37
+#: 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 ""
-"如果你希望使用Google Analytics监控你的网站,请在这里设置 <a href=\"%(ga_site)"
-"s\">Google Analytics</a>"
+"如果你希望使用Google Analytics监控你的网站,请在这里设置 <a href="
+"\"%(ga_site)s\">Google Analytics</a>"
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr "激活recaptcha(下é¢çš„keys是必须的)"
-#: conf/external_keys.py:59
+#: conf/external_keys.py:60
msgid "Recaptcha public key"
msgstr "Recaptcha public key"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:68
msgid "Recaptcha private key"
msgstr "Recaptcha private key"
-#: conf/external_keys.py:69
+#: conf/external_keys.py:70
#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -715,11 +761,11 @@ msgstr ""
"Recaptcha这个工具帮助我们辨别出垃圾邮件中的真实用户,\n"
"请从这里获å–public key <a href=\"http://recaptcha.net\">recaptcha.net</a>"
-#: conf/external_keys.py:81
+#: conf/external_keys.py:82
msgid "Facebook public API key"
msgstr "Facebook public API key"
-#: conf/external_keys.py:83
+#: conf/external_keys.py:84
#, fuzzy, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -731,15 +777,15 @@ msgstr ""
"获å–这些,通过<a href=\"http://www.\n"
"facebook.com/developers/createapp.php\">facebook create app</a> 网站"
-#: conf/external_keys.py:96
+#: conf/external_keys.py:97
msgid "Facebook secret key"
msgstr "Facebook secret key"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:105
msgid "Twitter consumer key"
msgstr "Twitter consumer key"
-#: conf/external_keys.py:106
+#: conf/external_keys.py:107
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
@@ -748,15 +794,15 @@ msgstr ""
"请在这里注册你的网站 <a href=\"http://dev.twitter.com/apps/\">twitter "
"applications site</a>"
-#: conf/external_keys.py:117
+#: conf/external_keys.py:118
msgid "Twitter consumer secret"
msgstr "Twitter consumer secret"
-#: conf/external_keys.py:125
+#: conf/external_keys.py:126
msgid "LinkedIn consumer key"
msgstr "LinkedIn consumer key"
-#: conf/external_keys.py:127
+#: conf/external_keys.py:128
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
@@ -764,16 +810,16 @@ msgstr ""
"请在这里注册你的网站 <a href=\"http://dev.twitter.com/apps/\">twitter "
"applications site</a>"
-#: conf/external_keys.py:138
+#: conf/external_keys.py:139
msgid "LinkedIn consumer secret"
msgstr "LinkedIn consumer secret"
-#: conf/external_keys.py:146
+#: conf/external_keys.py:147
#, fuzzy
msgid "ident.ca consumer key"
msgstr "LinkedIn consumer key"
-#: conf/external_keys.py:148
+#: conf/external_keys.py:149
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
@@ -782,37 +828,37 @@ msgstr ""
"请在这里注册你的网站 <a href=\"http://dev.twitter.com/apps/\">twitter "
"applications site</a>"
-#: conf/external_keys.py:159
+#: conf/external_keys.py:160
#, fuzzy
msgid "ident.ca consumer secret"
msgstr "LinkedIn consumer secret"
-#: conf/external_keys.py:167
+#: conf/external_keys.py:168
#, fuzzy
msgid "Use LDAP authentication for the password login"
msgstr "为使用密ç ç™»å½•çš„用户进行LDAP验è¯"
-#: conf/external_keys.py:176
+#: conf/external_keys.py:177
msgid "LDAP service provider name"
msgstr "LDAPæœåŠ¡æ供商"
-#: conf/external_keys.py:184
+#: conf/external_keys.py:185
msgid "URL for the LDAP service"
msgstr "LDAPæœåŠ¡URL"
-#: conf/external_keys.py:192
+#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
msgstr "如何修改LDAP密ç "
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "关于,éšç§æ”¿ç­–ç­‰"
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr "关于页é¢çš„Q&A讨论内容(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."
@@ -820,12 +866,12 @@ msgstr ""
"ä¿å­˜, 然åŽå¼€å¯ <a href=\"http://validator.w3.org/\">使用HTML验è¯</a> \"关于"
"\" 页é¢åŽ»æ£€æŸ¥ä½ çš„输入."
-#: conf/flatpages.py:30
+#: conf/flatpages.py:32
#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr "关于页é¢çš„Q&A讨论内容(htmlæ ¼å¼)"
-#: conf/flatpages.py:33
+#: conf/flatpages.py:35
#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
@@ -834,11 +880,11 @@ msgstr ""
"ä¿å­˜, 然åŽå¼€å¯ <a href=\"http://validator.w3.org/\">使用HTML验è¯</a> \"关于"
"\" 页é¢åŽ»æ£€æŸ¥ä½ çš„输入."
-#: conf/flatpages.py:44
+#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr "Q&A讨论的éšç§æ”¿ç­–(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."
@@ -846,37 +892,37 @@ msgstr ""
"ä¿å­˜, 然åŽå¼€å¯ <a href=\"http://validator.w3.org/\">使用HTML验è¯</a>\"éšç§\" "
"页é¢åŽ»æ£€æŸ¥ä½ çš„输入."
-#: conf/forum_data_rules.py:11
+#: conf/forum_data_rules.py:12
#, fuzzy
-msgid "Data entry and display"
+msgid "Data entry and display rules"
msgstr "设置数æ®æ˜¾ç¤ºæ–¹å¼"
-#: conf/forum_data_rules.py:20
+#: 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>"
msgstr ""
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr "å¼€å¯ç¤¾åŒºwiki功能"
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
msgstr ""
-#: 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 ""
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
msgstr ""
-#: 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 "
@@ -884,226 +930,225 @@ msgid ""
"login system supports this feature."
msgstr ""
-#: conf/forum_data_rules.py:71
+#: conf/forum_data_rules.py:73
#, fuzzy
msgid "Allow swapping answer with question"
msgstr "回答该问题"
-#: 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 ""
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "标签最大长度(字符数)"
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:95
#, fuzzy
msgid "Mandatory tags"
msgstr "更新标签"
-#: conf/forum_data_rules.py:96
+#: 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:108
+#: conf/forum_data_rules.py:110
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:110
+#: 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:124
+#: conf/forum_data_rules.py:126
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: 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:138
+#: conf/forum_data_rules.py:140
#, fuzzy
msgid "Use wildcard tags"
msgstr "相关标签"
-#: conf/forum_data_rules.py:140
+#: 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:153
+#: conf/forum_data_rules.py:155
msgid "Default max number of comments to display under posts"
msgstr "默认显示最大留言数"
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:166
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr "最大留言长度,必须å°äºŽ%(max_len)s"
-#: conf/forum_data_rules.py:174
+#: conf/forum_data_rules.py:176
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:178
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:189
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:190
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:199
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:208
msgid "Minimum length of search term for Ajax search"
msgstr "æœç´¢æœ€å°é•¿åº¦"
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:209
msgid "Must match the corresponding database backend setting"
msgstr "必须匹é…相关数æ®åº“设置"
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:218
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: 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:231
+#: conf/forum_data_rules.py:233
msgid "Maximum number of tags per question"
msgstr "æ¯ä¸ªé—®é¢˜çš„最多标签数"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:245
msgid "Number of questions to list by default"
msgstr "默认显示的问题数"
-#: conf/forum_data_rules.py:253
+#: conf/forum_data_rules.py:255
msgid "What should \"unanswered question\" mean?"
msgstr "\"未回答\"问题是什么?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "基本设置"
+#: conf/license.py:13
+msgid "Content LicensContent License"
+msgstr ""
-#: conf/license.py:19
+#: conf/license.py:21
msgid "Show license clause in the site footer"
msgstr ""
-#: conf/license.py:28
+#: conf/license.py:30
msgid "Short name for the license"
msgstr ""
-#: conf/license.py:37
+#: conf/license.py:39
msgid "Full name of the license"
msgstr ""
-#: conf/license.py:38
+#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
-#: conf/license.py:46
+#: conf/license.py:48
msgid "Add link to the license page"
msgstr ""
-#: conf/license.py:55
+#: conf/license.py:57
#, fuzzy
msgid "License homepage"
msgstr "回到首页"
-#: conf/license.py:57
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
msgstr ""
-#: conf/license.py:67
+#: conf/license.py:69
#, fuzzy
msgid "Use license logo"
msgstr "%(site)s logo"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
msgstr ""
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
msgstr ""
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: conf/login_providers.py:60
+#: conf/login_providers.py:62
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:90
+#: conf/login_providers.py:92
#, fuzzy, python-format
msgid "Activate %(provider)s login"
msgstr "ä½ çš„%(provider)s登录æˆåŠŸ"
-#: conf/login_providers.py:95
+#: conf/login_providers.py:97
#, 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:14
-msgid "Markup formatting"
-msgstr "标记格å¼"
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr ""
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
msgstr "激活code-friendly Markdown"
-#: 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 "
@@ -1113,43 +1158,43 @@ msgstr ""
"下划线的字符将ä¸ä¼šæœ‰æ–œä½“或粗体格å¼ï¼Œç²—体和斜体内容ä»ç„¶å¯ä»¥ç”¨*å·æ ‡è®°ã€‚注æ„"
"\"MathJax support\" 功能默认是打开的,因为下划线在LaTeX输入中是é‡åº¦ä½¿ç”¨çš„。"
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
msgstr "Mathjax支æŒ(LaTex渲染)"
-#: conf/markup.py:58
+#: conf/markup.py:60
#, 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 "激活此功能, <a href=\"%(url)s\">mathjax</a> 必须安装到 %(dir)s目录"
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
msgstr "部署MathJax的基本url"
-#: 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 ""
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
-#: 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 ""
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
msgstr ""
-#: 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+). "
@@ -1158,11 +1203,11 @@ msgid ""
"expressions elsewhere."
msgstr ""
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
msgstr ""
-#: 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 "
@@ -1172,164 +1217,165 @@ msgid ""
"in the redhat bug tracker."
msgstr ""
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "完æˆè¿™ä¸ªåŠ¨ä½œéœ€è¦æœ€å°ç§¯åˆ†"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
-#: conf/minimum_reputation.py:20
+#: conf/minimum_reputation.py:22
msgid "Upvote"
msgstr "投赞æˆç¥¨"
-#: conf/minimum_reputation.py:29
+#: conf/minimum_reputation.py:31
msgid "Downvote"
msgstr "投å对票"
-#: conf/minimum_reputation.py:38
+#: conf/minimum_reputation.py:40
#, fuzzy
msgid "Answer own question immediately"
msgstr "回答你自己的问题"
-#: conf/minimum_reputation.py:47
+#: conf/minimum_reputation.py:49
#, fuzzy
msgid "Accept own answer"
msgstr "编辑问题"
-#: conf/minimum_reputation.py:56
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
msgstr "垃圾帖"
# todo - check if it's indeed plural
-#: conf/minimum_reputation.py:65
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
msgstr "添加留言"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "删除其他人的留言"
-#: conf/minimum_reputation.py:83
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
msgstr "删除任何一个问题或答案,åŠå…¶ä»–管ç†åŠŸèƒ½"
-#: conf/minimum_reputation.py:92
+#: conf/minimum_reputation.py:94
msgid "Upload files"
msgstr "上传文件"
# close.html
-#: conf/minimum_reputation.py:101
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
msgstr "关闭自己的问题"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr "为其他人å‘布的问题é‡æ–°è®¾ç½®æ ‡ç­¾"
-#: conf/minimum_reputation.py:119
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
msgstr "é‡è®¾é—®é¢˜"
-#: conf/minimum_reputation.py:128
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
msgstr "编辑wiki类问题"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr "编辑其他人的å‘布æƒé™"
-#: conf/minimum_reputation.py:146
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
msgstr "查看标记垃圾帖"
# must have extra space after in english
-#: conf/minimum_reputation.py:155
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
msgstr "关闭其他人的问题"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "é”定å‘布"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
msgstr ""
-#: 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 ""
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/reputation_changes.py:13
+#, fuzzy
+msgid "Karma loss and gain rules"
msgstr "积分规则"
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
msgstr "用户æ¯æ—¥èŽ·å–积分上é™"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
msgstr "标记接收的推è票"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
msgstr "标记接å—回答的作者"
-#: conf/reputation_changes.py:48
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
msgstr "标记最佳答案"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
msgstr "标记å‘布者å–消å对票"
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
msgstr "标记投票者å–消å对票"
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
msgstr "å‡å°‘投票者积分当å–消回答的接å—æ—¶"
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
msgstr "å‡å°‘å‘布者积分当回答为ä¸å¯æŽ¥å—æ—¶"
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
msgstr "å‡å°‘å‘布者积分当获得å对票时"
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr "å‡å°‘å‘布者积分当问题被标记为垃圾贴时"
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
msgstr "å‡å°‘å‘布者积分当问题被投å对票时"
-#: 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 "å‡å°‘å‘布者积分当问题被3次åŒæ ·çš„修改标记时"
-#: 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 "å‡å°‘å‘布者积分当问题被5次åŒæ ·çš„修改标记时"
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr "å‡å°‘å‘布者积分当推è票å–消时"
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
msgstr ""
-#: 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 ""
-#: 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 "
@@ -1337,44 +1383,44 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
msgstr ""
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 "
@@ -1382,52 +1428,53 @@ msgid ""
"all browsers."
msgstr ""
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+#, fuzzy
+msgid "User profile sidebar"
+msgstr "用户概览"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+#, fuzzy
+msgid "Question page sidebar"
+msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
msgstr ""
-#: 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 ""
-#: conf/sidebar_question.py:61
+#: conf/sidebar_question.py:62
#, fuzzy
msgid "Show related questions in sidebar"
msgstr "相似的问题"
-#: conf/sidebar_question.py:63
+#: conf/sidebar_question.py:64
#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr "最近被更新的问题"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "网站"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
msgstr ""
-#: 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 "
@@ -1435,53 +1482,53 @@ msgid ""
"changed after you modify this setting."
msgstr ""
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
-msgstr "网站å‚æ•°åŠurls"
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
-#: conf/site_settings.py:19
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
msgstr "网站标题"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr "以逗å·åˆ†éš”的网站关键字列表"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
msgstr "显示在页脚的版æƒä¿¡æ¯"
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
msgstr "为æœç´¢å¼•æ“Žæ·»åŠ çš„网站æè¿°"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr "网站缩写"
-#: conf/site_settings.py:66
+#: conf/site_settings.py:68
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr "网站根地å€,必须以http或https开头"
-#: conf/site_settings.py:77
+#: conf/site_settings.py:79
#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr "匿å用户邮件"
-#: conf/site_settings.py:88
+#: conf/site_settings.py:90
#, fuzzy
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr "为匿å用户显示的问候语"
-#: conf/site_settings.py:92
+#: conf/site_settings.py:94
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:101
+#: conf/site_settings.py:103
msgid "Feedback site URL"
msgstr "问题å馈URL"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:105
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr "如果留空,一个简å•çš„内部å馈将被å‘é€"
@@ -1594,33 +1641,33 @@ msgstr "接å—背景色"
msgid "Foreground color for accepted answer"
msgstr "接å—回答å‰æ™¯è‰²"
-#: 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 ""
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
msgstr "网站logo"
-#: 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 "改logo,选择一个新文件并æ交"
-#: conf/skin_general_settings.py:37
+#: conf/skin_general_settings.py:39
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:39
+#: 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:51
+#: conf/skin_general_settings.py:53
msgid "Site favicon"
msgstr "网站favicon"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:55
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1630,21 +1677,21 @@ msgstr ""
"16x16 或 32x32åƒç´ icon图片用于区分你网站的æµè§ˆå™¨ç”¨æˆ·æŽ¥å£ã€‚请查看更多faviconä¿¡"
"æ¯åœ¨<a href=\"%(favicon_info_url)s\">this page</a>."
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:73
msgid "Password login button"
msgstr "密ç ç™»å½•æŒ‰é’®"
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:75
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr "88x38åƒç´ çš„图片被用于登录界é¢çš„密ç ç™»å½•æŒ‰é’®"
-#: conf/skin_general_settings.py:88
+#: conf/skin_general_settings.py:90
msgid "Show all UI functions to all users"
msgstr "显示所有UI功能给所有用户"
-#: conf/skin_general_settings.py:90
+#: 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 "
@@ -1653,19 +1700,19 @@ msgstr ""
"如果选择了,所有的网站功能将被展示给用户,ä¸ç®¡ä»–们的积分是多少.尽管使用了这些功"
"能,适度规则,积分和其他é™åˆ¶ä»ç„¶æœ‰ä½œç”¨."
-#: conf/skin_general_settings.py:105
+#: conf/skin_general_settings.py:107
msgid "Select skin"
msgstr "选择主题"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:118
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:127
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: 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 "
@@ -1677,11 +1724,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:149
+#: conf/skin_general_settings.py:151
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:151
+#: 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 "
@@ -1690,21 +1737,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:168
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:168
+#: 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:185
+#: conf/skin_general_settings.py:187
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:187
+#: 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 "
@@ -1713,21 +1760,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:204
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:204
+#: 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:216
+#: conf/skin_general_settings.py:218
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: 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 "
@@ -1736,19 +1783,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:236
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:239
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:249
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: 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 "
@@ -1759,141 +1806,169 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:269
msgid "Skin media revision number"
msgstr "主题修正数字"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:271
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:282
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:286
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr "在社会化网络上共享信æ¯"
-#: conf/social_sharing.py:18
+#: conf/social_sharing.py:20
#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
msgstr "激活在Twitter和Facebook上共享问答"
-#: conf/social_sharing.py:27
+#: conf/social_sharing.py:29
#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr "激活在Twitter和Facebook上共享问答"
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
#, fuzzy
msgid "Check to enable sharing of questions on LinkedIn"
msgstr "激活在Twitter和Facebook上共享问答"
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
#, fuzzy
msgid "Check to enable sharing of questions on Identi.ca"
msgstr "激活在Twitter和Facebook上共享问答"
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
#, fuzzy
msgid "Check to enable sharing of questions on Google+"
msgstr "激活在Twitter和Facebook上共享问答"
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
msgstr ""
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
#, fuzzy
msgid "Enable Akismet spam detection(keys below are required)"
msgstr "激活recaptcha(下é¢çš„keys是必须的)"
-#: 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 ""
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
msgstr ""
-#: conf/user_settings.py:11
+#: 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
+#, fuzzy
+msgid "Data rules & Formatting"
+msgstr "标记格å¼"
+
+#: conf/super_groups.py:8
+#, fuzzy
+msgid "External Services"
+msgstr "其他æœåŠ¡"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:12
#, fuzzy
msgid "User settings"
msgstr "用户éšç§è®¾ç½®"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:21
msgid "Allow editing user screen name"
msgstr "å…许修改用户昵称"
-#: conf/user_settings.py:28
+#: conf/user_settings.py:30
#, fuzzy
msgid "Allow account recovery by email"
msgstr "å‘é€è´¦æˆ·æ¢å¤é‚®ä»¶"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:39
#, fuzzy
msgid "Allow adding and removing login methods"
msgstr "请添加一个或多个登录方å¼"
-#: conf/user_settings.py:47
+#: conf/user_settings.py:49
msgid "Minimum allowed length for screen name"
msgstr "用户昵称å…许的最å°é•¿åº¦"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:59
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:59
+#: 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:69
+#: conf/user_settings.py:71
#, fuzzy
msgid "Name for the Anonymous user"
msgstr "匿å用户邮件"
-#: 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 ""
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
msgstr "æ¯ç”¨æˆ·æ¯å¤©å…许的投票数"
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
msgstr "æ¯ç”¨æˆ·æ¯å¤©çš„最多标记"
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
msgstr "æ醒用户æ¯å¤©æŠ•ç¥¨çš„剩余数"
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr "æ¯å¤©å…许å–消的投票数"
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
#, fuzzy
msgid "Number of days required before answering own question"
msgstr "æ¯å¤©å…许å–消的投票数"
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr "è¦æ±‚自动éšè—标志数"
-#: conf/vote_rules.py:76
+#: 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 ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "完全é‡å¤çš„问题"
@@ -2000,193 +2075,198 @@ msgstr "未回答的问题"
msgid "Question has no accepted answers"
msgstr "ä»æ²¡æœ‰æ­£ç¡®ç­”案的问题"
-#: const/__init__.py:121
+#: const/__init__.py:122
msgid "asked a question"
msgstr "我è¦æé—®"
-#: const/__init__.py:122
+#: const/__init__.py:123
msgid "answered a question"
msgstr "回答问题"
-#: const/__init__.py:123
+#: const/__init__.py:124
msgid "commented question"
msgstr "评论问题"
-#: const/__init__.py:124
+#: const/__init__.py:125
msgid "commented answer"
msgstr "评论回答"
-#: const/__init__.py:125
+#: const/__init__.py:126
msgid "edited question"
msgstr "修改问题"
-#: const/__init__.py:126
+#: const/__init__.py:127
msgid "edited answer"
msgstr "修改回答"
-#: const/__init__.py:127
+#: const/__init__.py:128
msgid "received award"
msgstr "获奖"
-#: const/__init__.py:128
+#: const/__init__.py:129
msgid "marked best answer"
msgstr "标记最佳答案"
-#: const/__init__.py:129
+#: const/__init__.py:130
msgid "upvoted"
msgstr "投赞æˆç¥¨"
-#: const/__init__.py:130
+#: const/__init__.py:131
msgid "downvoted"
msgstr "投å对票"
-#: const/__init__.py:131
+#: const/__init__.py:132
msgid "canceled vote"
msgstr "撤销投票"
-#: const/__init__.py:132
+#: const/__init__.py:133
msgid "deleted question"
msgstr "删除问题"
-#: const/__init__.py:133
+#: const/__init__.py:134
msgid "deleted answer"
msgstr "删除回答"
-#: const/__init__.py:134
+#: const/__init__.py:135
msgid "marked offensive"
msgstr "标记垃圾帖"
-#: const/__init__.py:135
+#: const/__init__.py:136
msgid "updated tags"
msgstr "更新标签"
-#: const/__init__.py:136
+#: const/__init__.py:137
msgid "selected favorite"
msgstr "收è—"
-#: const/__init__.py:137
+#: const/__init__.py:138
msgid "completed user profile"
msgstr "完æˆä¸ªäººæ‰€æœ‰èµ„æ–™"
-#: const/__init__.py:138
+#: const/__init__.py:139
msgid "email update sent to user"
msgstr "å‘é€é‚®ä»¶æ›´æ–°"
-#: const/__init__.py:141
+#: const/__init__.py:142
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "查看没有回答的问题"
-#: const/__init__.py:143
+#: const/__init__.py:146
+#, fuzzy
+msgid "reminder about accepting the best answer sent"
+msgstr "标记最佳答案"
+
+#: const/__init__.py:148
msgid "mentioned in the post"
msgstr "å‘布æ醒"
-#: const/__init__.py:194
+#: const/__init__.py:199
msgid "question_answered"
msgstr "回答的问题"
-#: const/__init__.py:195
+#: const/__init__.py:200
msgid "question_commented"
msgstr "留言的问题"
-#: const/__init__.py:196
+#: const/__init__.py:201
msgid "answer_commented"
msgstr "留言的回答"
-#: const/__init__.py:197
+#: const/__init__.py:202
msgid "answer_accepted"
msgstr "已接å—的回答"
-#: const/__init__.py:201
+#: const/__init__.py:206
msgid "[closed]"
msgstr "[已关闭]"
-#: const/__init__.py:202
+#: const/__init__.py:207
msgid "[deleted]"
msgstr "[已删除]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:208 views/readers.py:589
msgid "initial version"
msgstr "åˆå§‹ç‰ˆæœ¬"
-#: const/__init__.py:204
+#: const/__init__.py:209
msgid "retagged"
msgstr "更新了标签"
-#: const/__init__.py:212
+#: const/__init__.py:217
msgid "off"
msgstr ""
-#: const/__init__.py:213
+#: const/__init__.py:218
#, fuzzy
msgid "exclude ignored"
msgstr "包å«å¿½ç•¥æ ‡ç­¾"
-#: const/__init__.py:214
+#: const/__init__.py:219
#, fuzzy
msgid "only selected"
msgstr "个人选项"
-#: const/__init__.py:218
+#: const/__init__.py:223
msgid "instantly"
msgstr "ç«‹å³"
-#: const/__init__.py:219
+#: const/__init__.py:224
msgid "daily"
msgstr "æ¯æ—¥"
-#: const/__init__.py:220
+#: const/__init__.py:225
msgid "weekly"
msgstr "æ¯å‘¨"
-#: const/__init__.py:221
+#: const/__init__.py:226
msgid "no email"
msgstr "没有邮件"
-#: const/__init__.py:228
+#: const/__init__.py:233
msgid "identicon"
msgstr ""
-#: const/__init__.py:229
+#: const/__init__.py:234
#, fuzzy
msgid "mystery-man"
msgstr "昨天"
-#: const/__init__.py:230
+#: const/__init__.py:235
msgid "monsterid"
msgstr ""
-#: const/__init__.py:231
+#: const/__init__.py:236
#, fuzzy
msgid "wavatar"
msgstr "修改头åƒ"
-#: const/__init__.py:232
+#: const/__init__.py:237
msgid "retro"
msgstr ""
-#: const/__init__.py:279
+#: const/__init__.py:284
msgid "gold"
msgstr "金牌"
-#: const/__init__.py:280
+#: const/__init__.py:285
msgid "silver"
msgstr "银牌"
-#: const/__init__.py:281
+#: const/__init__.py:286
msgid "bronze"
msgstr "铜牌"
-#: const/__init__.py:293
+#: const/__init__.py:298
msgid "None"
msgstr ""
-#: const/__init__.py:294
+#: const/__init__.py:299
#, fuzzy
msgid "Gravatar"
msgstr "修改头åƒ"
-#: const/__init__.py:295
+#: const/__init__.py:300
msgid "Uploaded Avatar"
msgstr ""
@@ -2318,7 +2398,7 @@ 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:203
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
msgid "signin/"
msgstr "登录/"
@@ -2446,71 +2526,71 @@ msgstr "用你的%(provider)s 账户登录"
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s是ä¸æ­£ç¡®çš„"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
+#: deps/django_authopenid/views.py:449
#, 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:365
+#: deps/django_authopenid/views.py:371
msgid "Your new password saved"
msgstr "你的新密ç å·²ä¿å­˜"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:475
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:579
msgid "Please click any of the icons below to sign in"
msgstr "请点击下é¢ä»»ä½•ä¸€ä¸ªå›¾æ ‡ç™»å½•"
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:581
msgid "Account recovery email sent"
msgstr "å‘é€è´¦æˆ·æ¢å¤é‚®ä»¶"
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:584
msgid "Please add one or more login methods."
msgstr "请添加一个或多个登录方å¼"
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:586
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr "您å¯ä»¥æ·»åŠ ï¼Œåˆ é™¤æˆ–é‡æ–°éªŒè¯ä½ çš„登录方å¼"
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:588
msgid "Please wait a second! Your account is recovered, but ..."
msgstr "请ç¨ç­‰ï¼Œä½ çš„账户正在æ¢å¤..."
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:590
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr "对ä¸èµ·ï¼Œè¿™ä¸ªè´¦æˆ·æ¢å¤å·²è¿‡æœŸæˆ–ä¸æ­£ç¡®"
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:663
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr "%(provider_name)s登录方å¼ä¸å­˜åœ¨"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:669
msgid "Oops, sorry - there was some error - please try again"
msgstr "对ä¸èµ·ï¼Œç³»ç»Ÿå‡ºé”™ï¼Œè¯·é‡è¯•"
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:760
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "ä½ çš„%(provider)s登录æˆåŠŸ"
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
+#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr "ä½ çš„email需è¦éªŒè¯ï¼Œçœ‹è¿™é‡Œ%(details_url)s"
-#: deps/django_authopenid/views.py:1092
+#: deps/django_authopenid/views.py:1098
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "通过邮件æ¢å¤ä½ çš„账户"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1168
msgid "Please check your email and visit the enclosed link."
msgstr "请检查你的邮件并访问其内部链接"
@@ -2518,100 +2598,33 @@ msgstr "请检查你的邮件并访问其内部链接"
msgid "Site"
msgstr "网站"
-#: deps/livesettings/values.py:106
+#: deps/livesettings/values.py:68
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:127
msgid "Base Settings"
msgstr "基本设置"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:234
msgid "Default value: \"\""
msgstr "默认值:"
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:241
msgid "Default value: "
msgstr "默认值:"
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:244
#, python-format
msgid "Default value: %s"
msgstr "默认值: %s"
# todo take these out of settings
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:622
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "åªå…许上传'%(file_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
-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 "修改组设置"
-
-#: 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 "设置包å«åœ¨%(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 "你没有æƒé™ä¿®æ”¹è¿™äº›å€¼"
-
-# book.html line 123 must be empty in english
-#: deps/livesettings/templates/livesettings/group_settings.html:68
-msgid "Setting groups"
-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 "所有é…置选项都必须在网站的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 ""
-
# base_content.html
#: importers/stackexchange/management/commands/load_stackexchange.py:141
msgid "Congratulations, you are now an Administrator"
@@ -2640,15 +2653,15 @@ 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>"
+"<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>"
+"<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
@@ -2657,6 +2670,21 @@ msgid ""
"of your user account</p>"
msgstr ""
+#: management/commands/send_accept_answer_reminders.py:57
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:62
+#, fuzzy
+msgid "Please accept the best answer for this question:"
+msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå›žç­”此问题的人!"
+
+#: management/commands/send_accept_answer_reminders.py:64
+#, fuzzy
+msgid "Please accept the best answer for these questions:"
+msgstr "最新问题"
+
#: management/commands/send_email_alerts.py:411
#, fuzzy, python-format
msgid "%(question_count)d updated question about %(topics)s"
@@ -2707,88 +2735,99 @@ msgstr "由于技术问题你å¯èƒ½ä¼šæŽ¥æ”¶åˆ°ä¸€ä¸ªä»¥å‰çœ‹è¿‡çš„链接,我
#: management/commands/send_email_alerts.py:490
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"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管ç†å‘˜"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: management/commands/send_unanswered_question_reminders.py:56
#, fuzzy, 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 个更新"
-#: models/__init__.py:316
+#: middleware/forum_mode.py:31
+#, fuzzy, python-format
+msgid "Please log in to use %s"
+msgstr "请登录"
+
+#: models/__init__.py:317
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr "对ä¸èµ·,ä½ ä¸èƒ½è®¤å®šæˆ–å¦å†³æœ€ä½³ç­”案因为你的账户已冻结"
-#: models/__init__.py:320
+#: models/__init__.py:321
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr "对ä¸èµ·,ä½ ä¸èƒ½è®¤å®šæˆ–å¦å†³æœ€ä½³ç­”案因为你的账户已暂åœä½¿ç”¨"
-#: models/__init__.py:333
+#: models/__init__.py:334
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "对ä¸èµ·,ä½ ä¸èƒ½è®¤å®šæˆ–å¦å†³ä½ è‡ªå·±çš„回答的自己的问题"
-#: models/__init__.py:347
+#: models/__init__.py:353
+#, 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 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 "对ä¸èµ·,åªæœ‰é—®é¢˜çš„æ问者 - %(username)s - å¯ä»¥è®¤å®šæœ€ä½³ç­”案"
-#: models/__init__.py:375
+#: models/__init__.py:389
msgid "cannot vote for own posts"
msgstr "ä¸èƒ½ç»™è‡ªå·±çš„帖å­æŠ•ç¥¨"
-#: models/__init__.py:378
+#: models/__init__.py:392
msgid "Sorry your account appears to be blocked "
msgstr "对ä¸èµ·ä½ çš„账户已冻结"
-#: models/__init__.py:383
+#: models/__init__.py:397
msgid "Sorry your account appears to be suspended "
msgstr "对ä¸èµ·ä½ çš„账户已暂åœä½¿ç”¨"
-#: models/__init__.py:393
+#: models/__init__.py:407
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "需è¦+%(points)s积分æ‰èƒ½æŠ•æ”¯æŒç¥¨ã€‚"
-#: models/__init__.py:399
+#: models/__init__.py:413
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "需è¦+%(points)s积分æ‰èƒ½æŠ•å对票。"
-#: models/__init__.py:414
+#: models/__init__.py:428
msgid "Sorry, blocked users cannot upload files"
msgstr "对ä¸èµ·,冻结用户ä¸èƒ½ä¸Šä¼ æ–‡ä»¶"
-#: models/__init__.py:415
+#: models/__init__.py:429
msgid "Sorry, suspended users cannot upload files"
msgstr "对ä¸èµ·,æš‚åœä½¿ç”¨ç”¨æˆ·ä¸èƒ½ä¸Šä¼ æ–‡ä»¶"
-#: models/__init__.py:417
+#: models/__init__.py:431
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
msgstr "上传图片åªé™äºŽç§¯åˆ†+%(min_rep)s以上注册用户!"
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
+#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
msgid "blocked users cannot post"
msgstr "冻结用户ä¸èƒ½å‘布信æ¯"
-#: models/__init__.py:437 models/__init__.py:921
+#: models/__init__.py:451 models/__init__.py:935
msgid "suspended users cannot post"
msgstr "æš‚åœä½¿ç”¨ç”¨æˆ·ä¸èƒ½å‘布信æ¯"
-#: models/__init__.py:464
+#: models/__init__.py:478
#, fuzzy, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2798,16 +2837,16 @@ msgid_plural ""
"minutes from posting"
msgstr[0] "对ä¸èµ·ï¼Œç•™è¨€åªèƒ½åœ¨å‘布åŽ10分钟内å¯ç¼–辑"
-#: models/__init__.py:476
+#: models/__init__.py:490
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr "对ä¸èµ·ï¼Œåªæœ‰å‘布者或版主æ‰èƒ½ä¿®æ”¹ç•™è¨€"
-#: models/__init__.py:489
+#: models/__init__.py:503
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已暂åœä½¿ç”¨ï¼Œä½ åªèƒ½ç•™è¨€ä½ è‡ªå·±å‘布的信æ¯"
-#: models/__init__.py:493
+#: models/__init__.py:507
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2816,40 +2855,40 @@ msgstr ""
"对ä¸èµ·ï¼Œç•™è¨€ä»»ä½•ä¿¡æ¯éƒ½éœ€è¦æœ€å°‘%(min_rep)s积分值,ä½ å¯ä»¥ç•™è¨€ä½ è‡ªå·±å‘布或回答的"
"问题"
-#: models/__init__.py:521
+#: models/__init__.py:535
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr "这个问题已ç»è¢«åˆ é™¤ï¼Œè€Œä¸”åªèƒ½è¢«å‘布者,网站管ç†å‘˜å’Œç‰ˆä¸»æŸ¥çœ‹"
-#: models/__init__.py:538
+#: models/__init__.py:552
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr "对ä¸èµ·ï¼Œåªæœ‰ç‰ˆä¸»ï¼Œç½‘站管ç†å‘˜åŠå‘布者å¯ä»¥ç¼–辑删除此信æ¯"
-#: models/__init__.py:553
+#: models/__init__.py:567
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr "对ä¸èµ·ï¼Œä½ ä¸èƒ½ç¼–辑信æ¯å› ä¸ºä½ çš„账户被冻结"
-#: models/__init__.py:557
+#: models/__init__.py:571
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr "对ä¸èµ·ï¼Œä½ åªèƒ½ç¼–辑你自己å‘布的信æ¯å› ä¸ºä½ çš„账户被暂åœä½¿ç”¨"
-#: models/__init__.py:562
+#: models/__init__.py:576
#, 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:569
+#: models/__init__.py:583
#, 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:632
+#: models/__init__.py:646
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2858,234 +2897,235 @@ msgid_plural ""
"by other users"
msgstr[0] "对ä¸èµ·ï¼Œä½ ä¸èƒ½åˆ é™¤é—®é¢˜å› ä¸ºå®ƒå·²ç»æœ‰äº†æŠ•èµžæˆç¥¨çš„答案"
-#: models/__init__.py:647
+#: models/__init__.py:661
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr "对ä¸èµ·ï¼Œä½ ä¸èƒ½åˆ é™¤å‘布的信æ¯ï¼Œå› ä¸ºä½ çš„账户被冻结了"
-#: models/__init__.py:651
+#: models/__init__.py:665
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr "对ä¸èµ·ï¼Œä½ åªèƒ½åˆ é™¤ä½ è‡ªå·±å‘布的信æ¯å› ä¸ºä½ çš„账户被暂åœä½¿ç”¨äº†"
-#: models/__init__.py:655
+#: models/__init__.py:669
#, 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:675
+#: models/__init__.py:689
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已冻结你ä¸èƒ½å…³é—­é—®é¢˜"
-#: models/__init__.py:679
+#: models/__init__.py:693
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已暂åœä½¿ç”¨ä½ ä¸èƒ½å…³é—­é—®é¢˜"
-#: models/__init__.py:683
+#: models/__init__.py:697
#, 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:692
+#: models/__init__.py:706
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œä½ å¿…须有%(min_rep)s积分æ‰èƒ½å…³é—­è‡ªå·±å‘布的问题"
-#: models/__init__.py:716
+#: models/__init__.py:730
#, 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 "对ä¸èµ·ï¼Œåªæœ‰ç®¡ç†å‘˜ï¼Œç‰ˆä¸»å’Œæœ‰%(min_rep)s积分的å‘布者æ‰èƒ½é‡å¼€é—®é¢˜"
-#: models/__init__.py:722
+#: models/__init__.py:736
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œä½ å¿…须有%(min_rep)s积分æ‰èƒ½é‡å¼€è‡ªå·±å‘布的问题"
-#: models/__init__.py:742
+#: models/__init__.py:756
msgid "cannot flag message as offensive twice"
msgstr "ä¸èƒ½ä¸¤æ¬¡æ ‡è®°åŒä¸€ä¿¡æ¯ä¸ºåžƒåœ¾ä¿¡æ¯"
-#: models/__init__.py:747
+#: models/__init__.py:761
msgid "blocked users cannot flag posts"
msgstr "冻结用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
-#: models/__init__.py:749
+#: models/__init__.py:763
msgid "suspended users cannot flag posts"
msgstr "æš‚åœä½¿ç”¨çš„用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
-#: models/__init__.py:751
+#: models/__init__.py:765
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr "需è¦å¤§äºŽ%(min_rep)s积分值æ‰èƒ½æ ‡è®°åžƒåœ¾ä¿¡æ¯"
-#: models/__init__.py:770
+#: models/__init__.py:784
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr "%(max_flags_per_day)s 被处ç†"
-#: models/__init__.py:785
+#: models/__init__.py:799
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr "对ä¸èµ·ï¼Œåªæœ‰å‘问者,网站管ç†å‘˜å’Œç‰ˆä¸»æ‰èƒ½ä¸ºå·²åˆ é™¤é—®é¢˜ä¿®æ”¹æ ‡ç­¾"
-#: models/__init__.py:792
+#: models/__init__.py:806
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr "对ä¸èµ·ï¼Œä½ çš„账户已冻结,你ä¸èƒ½ä¸ºé—®é¢˜ä¿®æ”¹æ ‡ç­¾"
-#: models/__init__.py:796
+#: models/__init__.py:810
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr "对ä¸èµ·ï¼Œä½ çš„账户已暂åœä½¿ç”¨ï¼Œä½ åªèƒ½ä¸ºä½ è‡ªå·±çš„问题修改标签"
-#: models/__init__.py:800
+#: models/__init__.py:814
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œä¸ºé—®é¢˜ä¿®æ”¹æ ‡ç­¾å¿…须有%(min_rep)s积分值"
-#: models/__init__.py:819
+#: models/__init__.py:833
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已冻结你ä¸èƒ½åˆ é™¤ç•™è¨€"
-#: models/__init__.py:823
+#: models/__init__.py:837
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户暂åœä½¿ç”¨ï¼Œä½ åªèƒ½åˆ é™¤ä½ è‡ªå·±çš„留言"
-#: models/__init__.py:827
+#: models/__init__.py:841
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œåˆ é™¤ç•™è¨€å¿…须有%(min_rep)s积分值"
-#: models/__init__.py:850
+#: models/__init__.py:864
msgid "cannot revoke old vote"
msgstr "这个投票已ç»è¿‡æ—¶ï¼Œä¸èƒ½æ’¤é”€ã€‚"
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1339 utils/functions.py:70
#, python-format
msgid "on %(date)s"
msgstr "在%(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1341
#, fuzzy
msgid "in two days"
msgstr "登录并回答该问题"
-#: models/__init__.py:1329
+#: models/__init__.py:1343
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1331
+#: models/__init__.py:1345
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "%(hr)då°æ—¶å‰"
-#: models/__init__.py:1333
+#: models/__init__.py:1347
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "%(min)d分钟å‰"
-#: models/__init__.py:1334
+#: models/__init__.py:1348
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1336
+#: models/__init__.py:1350
#, 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:1502
+#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
+#: skins/old/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "匿å"
-#: models/__init__.py:1598 views/users.py:365
+#: models/__init__.py:1612 views/users.py:371
msgid "Site Adminstrator"
msgstr "网站管ç†å‘˜"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1614 views/users.py:373
msgid "Forum Moderator"
msgstr "论å›ç‰ˆä¸»"
-#: models/__init__.py:1602 views/users.py:369
+#: models/__init__.py:1616 views/users.py:375
msgid "Suspended User"
msgstr "æš‚åœè´¦æˆ·"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1618 views/users.py:377
msgid "Blocked User"
msgstr "冻结账户"
-#: models/__init__.py:1606 views/users.py:373
+#: models/__init__.py:1620 views/users.py:379
msgid "Registered User"
msgstr "注册用户"
-#: models/__init__.py:1608
+#: models/__init__.py:1622
msgid "Watched User"
msgstr "æµè§ˆç”¨æˆ·"
-#: models/__init__.py:1610
+#: models/__init__.py:1624
msgid "Approved User"
msgstr "认è¯ç”¨æˆ·"
-#: models/__init__.py:1719
+#: models/__init__.py:1733
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(username)s 积分是 %(reputation)s"
-#: models/__init__.py:1729
+#: models/__init__.py:1743
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] "%(count)d 金牌"
-#: models/__init__.py:1736
+#: models/__init__.py:1750
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "%(count)d 银牌"
-#: models/__init__.py:1743
+#: models/__init__.py:1757
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "%(count)d 铜牌"
-#: models/__init__.py:1754
+#: models/__init__.py:1768
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s 和 %(item2)s"
-#: models/__init__.py:1758
+#: models/__init__.py:1772
#, python-format
msgid "%(user)s has %(badges)s"
msgstr "%(user)s 有 %(badges)s"
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
+#: models/__init__.py:2195
#, python-format
msgid "Re: \"%(title)s\""
msgstr "Re: \"%(title)s\""
-#: models/__init__.py:2186 models/__init__.py:2191
+#: models/__init__.py:2200 models/__init__.py:2205
#, python-format
msgid "Question: \"%(title)s\""
msgstr "问题:\"%(title)s\""
-#: models/__init__.py:2372
+#: models/__init__.py:2386
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3094,20 +3134,10 @@ msgstr ""
"æ­å–œï¼Œä½ èŽ·å¾—一å—'%(badge_name)s'徽章,查看<a\n"
" href=\"%(user_profile)s\">你的资料</a>."
-#: models/__init__.py:2551 views/commands.py:396
+#: models/__init__.py:2565 views/commands.py:396
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
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr "对ä¸èµ·,这个问题已删除"
-
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
@@ -3371,52 +3401,62 @@ msgstr "专家"
msgid "Very active in one tag"
msgstr "éžå¸¸æ´»è·ƒçš„标签"
-#: models/meta.py:112
+#: 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
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr "对ä¸èµ·,你查找的评论ä¸èƒ½è®¿é—®,因为问题已删除"
-#: models/meta.py:119
+#: 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/question.py:72
+#: models/question.py:63
#, python-format
msgid "\" and \"%s\""
msgstr "\" 和 \"%s\""
-#: models/question.py:75
+#: models/question.py:66
msgid "\" and more"
msgstr "查看更多"
-#: models/question.py:452
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "对ä¸èµ·,此问题已删除"
-
-#: models/question.py:908
+#: models/question.py:806
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s修改了问题"
-#: models/question.py:912
+#: 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:917
+#: models/question.py:815
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s评论了问题"
-#: models/question.py:922
+#: models/question.py:820
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s 评论了答案"
-#: models/question.py:924
+#: models/question.py:822
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s 评论了答案"
@@ -3429,8 +3469,8 @@ msgstr "<em>被版主修改. 原因:</em> %(reason)s"
#: models/repute.py:153
#, 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分被加给 %(username)s,因为他贡献了 %(question_title)s问题"
#: models/repute.py:158
@@ -3484,6 +3524,84 @@ msgstr "æ¯å‘¨"
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/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
+msgid ""
+"Sincerely,\n"
+"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
+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
+#, fuzzy, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"你好, 这是从 %(site_title)s 网站å‘出的å馈信æ¯ã€‚\n"
+
+#: 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."
+msgstr ""
+"如果你认为此消æ¯è¢«é”™è¯¯çš„å‘é€,ä¸è¦è¿›è¡Œæ›´è¿›ä¸€æ­¥çš„动作.仅仅忽略这å°é‚®ä»¶,为给您带"
+"æ¥çš„ä¸ä¾¿é“æ­‰."
+
#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
msgid "no items in counter"
msgstr "æ— "
@@ -3655,127 +3773,112 @@ msgstr "请登录"
msgid "Please sign in to vote"
msgstr "请在这登录"
-#: views/meta.py:83
+#: views/meta.py:84
msgid "Q&A forum feedback"
msgstr "Q&Aå馈"
-#: views/meta.py:84
+#: views/meta.py:85
msgid "Thanks for the feedback!"
msgstr "感谢你的å馈"
-#: views/meta.py:92
+#: views/meta.py:94
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr "我们期望你的å馈"
-#: views/readers.py:131
+#: 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个问题"
-#: views/readers.py:139
+#: views/readers.py:159
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
msgstr[0] "%(q_num)s个问题"
-#: views/readers.py:177
+#: 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奖章"
-#: views/readers.py:232
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "票"
-
-#: views/readers.py:235
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "回答"
-
-#: views/readers.py:238
-msgid "view"
-msgid_plural "views"
-msgstr[0] "æµè§ˆ"
-
-#: views/readers.py:440
+#: views/readers.py:415
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "对ä¸èµ·ï¼Œä½ æ‰¾çš„这个评论已ç»è¢«åˆ é™¤"
-#: views/users.py:224
+#: views/users.py:211
msgid "moderate this user"
msgstr "设为版主"
-#: views/users.py:225
+#: views/users.py:212
#, fuzzy
msgid "moderate user"
msgstr "中等用户"
-#: views/users.py:380
+#: views/users.py:386
msgid "user profile"
msgstr "用户概览"
-#: views/users.py:381
+#: views/users.py:387
msgid "user profile overview"
msgstr "用户概览"
-#: views/users.py:685
+#: views/users.py:698
msgid "recent user activity"
msgstr "最近活动"
-#: views/users.py:686
+#: views/users.py:699
msgid "profile - recent activity"
msgstr "最近活动"
-#: views/users.py:772
+#: views/users.py:785
msgid "comments and answers to others questions"
msgstr "其他问题的回å¤å’Œè¯„论"
-#: views/users.py:773
+#: views/users.py:786
msgid "profile - responses"
msgstr "回应 - 用户资料"
-#: views/users.py:847
+#: views/users.py:860
msgid "user vote record"
msgstr "用户所有投票"
-#: views/users.py:848
+#: views/users.py:861
msgid "profile - votes"
msgstr "用户资料 - 投票"
-#: views/users.py:883
+#: views/users.py:896
msgid "user reputation in the community"
msgstr "用户社区积分"
-#: views/users.py:884
+#: views/users.py:897
msgid "profile - user reputation"
msgstr "积分 - 用户资料"
-#: views/users.py:911
+#: views/users.py:924
msgid "users favorite questions"
msgstr "用户收è—的问题"
-#: views/users.py:912
+#: views/users.py:925
msgid "profile - favorite questions"
msgstr "æ”¶è— - 用户资料"
-#: views/users.py:932 views/users.py:936
+#: views/users.py:945 views/users.py:949
msgid "changes saved"
msgstr "修改已ä¿å­˜"
-#: views/users.py:942
+#: views/users.py:955
msgid "email updates canceled"
msgstr "邮件更新å–消"
-#: views/users.py:960
+#: views/users.py:973
msgid "email subscription settings"
msgstr "邮件订阅设置"
-#: views/users.py:961
+#: views/users.py:974
msgid "profile - email subscriptions"
msgstr "邮件订阅"
@@ -3834,14 +3937,438 @@ msgstr ""
msgid "sorry, we seem to have some technical difficulties"
msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
+#~ msgid "Sites"
+#~ msgstr "网站"
+
+#~ msgid "Documentation"
+#~ msgstr "文档"
+
+#~ msgid "Change password"
+#~ msgstr "修改密ç "
+
+#~ msgid "Log out"
+#~ msgstr "退出登录"
+
+#~ msgid "Home"
+#~ msgstr "首页"
+
+# page title
+#~ msgid "Edit Group Settings"
+#~ msgstr "修改组设置"
+
+#~ msgid "Please correct the error below."
+#~ msgid_plural "Please correct the errors below."
+#~ msgstr[0] "请改正下é¢çš„错误"
+
+#~ msgid "Settings included in %(name)s."
+#~ msgstr "设置包å«åœ¨%(name)s."
+
+#~ msgid "You don't have permission to edit values."
+#~ msgstr "你没有æƒé™ä¿®æ”¹è¿™äº›å€¼"
+
+#~ msgid "Edit Site Settings"
+#~ msgstr "编辑网站设置"
+
+#~ msgid "Livesettings are disabled for this site."
+#~ 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"
+#~ "All configuration options must be edited in the site settings.py file"
+#~ msgstr "所有é…置选项都必须在网站的settings.py文件中设置"
+
+#~ msgid "Group settings: %(name)s"
+#~ msgstr "组别设置: %(name)s"
+
+#~ msgid "Please enter your <span>user name</span>, then sign in"
+#~ msgstr "请输入你的用户å,然åŽç™»å½•"
+
+#~ msgid "(or select another login method above)"
+#~ msgstr "(或从上é¢é€‰æ‹©ä¸€ä¸ªç™»å½•æ–¹å¼)"
+
+#~ msgid "Sign in"
+#~ msgstr "注册å¸å·"
+
+#~ msgid "Change email"
+#~ msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+
+#~ msgid "Save your email address"
+#~ msgstr "ä¿å­˜æ‚¨çš„电å­é‚®ä»¶åœ°å€"
+
+#~ msgid "change %(email)s info"
+#~ msgstr "æ›´æ¢%(email)s电å­é‚®ä»¶"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr "为什么邮件是必须的,查看 %(gravatar_faq_url)s"
+
+#~ msgid "Your new Email"
+#~ msgstr "你的新邮件地å€"
+
+#~ msgid "Your Email"
+#~ msgstr "你的邮件"
+
+#~ msgid "Save Email"
+#~ msgstr "ä¿å­˜é‚®ä»¶åœ°å€"
+
+#~ msgid "Cancel"
+#~ msgstr "å–消"
+
+#~ msgid "Validate email"
+#~ msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr "验è¯%(email)s ä¿¡æ¯æˆ–到%(change_email_url)s"
+
+#~ msgid "Email not changed"
+#~ msgstr "邮件地å€æœªä¿®æ”¹"
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr "旧邮件%(email)s被ä¿å­˜,ä½ å¯ä»¥åŽ»%(change_email_url)s修改"
+
+#~ msgid "Email changed"
+#~ msgstr "邮件地å€å·²æ”¹"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "ä½ ç›®å‰çš„%(email)s邮件地å€å¯ä»¥è¢«ç”¨äºŽè¿™é‡Œ"
+
+#~ msgid "Email verified"
+#~ msgstr "邮件地å€ç¡®è®¤"
+
+#~ msgid "thanks for verifying email"
+#~ msgstr "感谢你确认邮件地å€"
+
+#~ 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 "Registration"
+#~ 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 ""
-#~ "此选项用于定义在下é¢çš„5个分类中当å‰é»˜è®¤é‚®ä»¶æ›´æ–°é¢‘率:用户问的问题,用户问的"
-#~ "问题,个人选择,整个讨论(æ¯ä¸ªç”¨æˆ·æ ‡ç­¾è¿‡æ»¤çš„请求)和用户æ醒åŠç•™è¨€å›žåº”"
+#~ "%(username)s 账户已存在,在%(provider)s找哦昂选择其他å称. Email也是必须"
+#~ "的, 查看 %(gravatar_faq_url)s"
+
+#~ 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 "注册新Facebook账户信æ¯, 查看 %(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 "昵称"
+
+#~ msgid "Email address label"
+#~ msgstr "您的电å­é‚®ä»¶åœ°å€"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "获å–商å“ä¿¡æ¯æ›´æ–°"
+
+#~ 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 "创建å¸å·"
+
+#~ msgid "Logout"
+#~ msgstr "退出登录"
+
+#~ msgid "User login"
+#~ msgstr "用户登录"
+
+#~ msgid ""
+#~ "\n"
+#~ " Your answer to %(title)s %(summary)s will be posted once you log "
+#~ "in\n"
+#~ " "
+#~ msgstr ""
+#~ "\n"
+#~ "登录åŽ,你的关于 %(title)s %(summary)s 的回答将被å‘布"
+
+#~ msgid ""
+#~ "Your question \n"
+#~ " %(title)s %(summary)s will be posted once you log in\n"
+#~ " "
+#~ msgstr "登录åŽ,你的关于 %(title)s %(summary)s 的问题将被å‘布"
+
+#~ 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 ""
+#~ "选择以下你最喜欢的方å¼ç™»å½•,你的扩展æœåŠ¡å¯†ç å°†è¢«ä¿æŠ¤ä¸”ä½ ä¸éœ€.è¦è®°ä½æˆ–创建一"
+#~ "个新密ç ."
+
+#~ 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选择添加一个新登录方å¼ã€‚"
+
+#~ 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登录。"
+
+#~ msgid ""
+#~ "Click on one of the icons below to add a new login method or re-validate "
+#~ "an existing one."
+#~ msgstr "点击以下icon,添加一个新的登录方å¼æˆ–者é‡éªŒè¯å·²ç»å­˜åœ¨çš„登录方å¼ã€‚"
+
+#~ 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。"
+
+#~ msgid ""
+#~ "Please check your email and visit the enclosed link to re-connect to your "
+#~ "account"
+#~ msgstr "请检查你的邮件并访问邮件里链接é‡è¿žä½ çš„账户"
+
+#~ msgid "Please enter your <span>user name and password</span>, then sign in"
+#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
+
+#~ msgid "Login failed, please try again"
+#~ msgstr "登录失败,请é‡è¯•"
+
+#, fuzzy
+#~ msgid "Login or email"
+#~ msgstr "没有邮件"
+
+#~ msgid "Password"
+#~ msgstr "密ç "
+
+#~ msgid "Login"
+#~ msgstr "登录"
+
+#~ msgid ""
+#~ "To change your password - please enter the new one twice, then submit"
+#~ msgstr "修改密ç -请输入新密ç ä¸¤æ¬¡å¹¶æ交"
+
+#~ msgid "New password"
+#~ msgstr "新密ç "
+
+#~ msgid "Please, retype"
+#~ msgstr "确认密ç "
+
+#~ msgid "Here are your current login methods"
+#~ msgstr "这里有你的登录方å¼"
+
+#~ msgid "provider"
+#~ msgstr "æ供者"
+
+#~ msgid "last used"
+#~ msgstr "上次活动时间"
+
+#~ msgid "delete, if you like"
+#~ msgstr "å¯ä»¥åˆ é™¤"
+
+#~ msgid "delete"
+#~ msgstr "删除"
+
+#, fuzzy
+#~ msgid "cannot be deleted"
+#~ msgstr "å–消"
+
+#~ msgid "Still have trouble signing in?"
+#~ msgstr "还有其他问题?"
+
+#~ msgid "Please, enter your email address below and obtain a new key"
+#~ msgstr "请输入你的邮件地å€åŠéªŒè¯ç "
+
+#~ msgid "Please, enter your email address below to recover your account"
+#~ msgstr "æ¢å¤è´¦æˆ·ï¼Œè¯·åœ¨ä¸‹é¢è¾“入你的邮件地å€"
+
+#~ msgid "recover your account via email"
+#~ msgstr "通过邮件æ¢å¤ä½ çš„账户"
+
+#~ msgid "Send a new recovery key"
+#~ msgstr "å‘é€ä¸€ä¸ªæ¢å¤å»º"
+
+#~ msgid "Recover your account via email"
+#~ msgstr "通过邮件æ¢å¤ä½ çš„账户"
+
+#~ msgid "Why use OpenID?"
+#~ msgstr "为什么需è¦OpenID登录?"
+
+#~ msgid "with openid it is easier"
+#~ msgstr ""
+#~ "构建在OpenID网络认è¯ä¸Šçš„本系统,ä¸éœ€è¦ä½ æ³¨å†Œæ–°çš„å¸å·ï¼Œå³å¯ä½¿ç”¨æˆ‘们系统的所"
+#~ "有功能"
+
+#~ msgid "reuse openid"
+#~ msgstr "用åŒä¸€ä¸ªå¸å·å¯ç™»å½•äº’è”网所有激活OpenID的网站"
+
+#~ msgid "openid is widely adopted"
+#~ msgstr "全世界有1.6亿OpenIDå¸å·ï¼Œå’Œ10,000个支æŒOpenID的站点"
+
+#~ msgid "openid is supported open standard"
+#~ msgstr "OpenID是有开放标准,并且有相关的基金组织æ供支æŒ"
+
+#~ msgid "Find out more"
+#~ msgstr "查看更多"
+
+#~ msgid "Get OpenID"
+#~ msgstr "获å–OpenID"
+
+#~ msgid "Signup"
+#~ msgstr "注册å¸å·"
+
+#, fuzzy
+#~ msgid "Please register by clicking on any of the icons below"
+#~ msgstr "请点击下é¢ä»»ä½•ä¸€ä¸ªå›¾æ ‡ç™»å½•"
+
+#, fuzzy
+#~ msgid "or create a new user name and password here"
+#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
+
+#~ msgid "Create login name and password"
+#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
+
+#~ msgid "Traditional signup info"
+#~ msgstr "传统登录信æ¯"
+
+#~ msgid ""
+#~ "Please read and type in the two words below to help us prevent automated "
+#~ "account creation."
+#~ msgstr "请输入验è¯ä¿¡æ¯"
+
+#~ msgid "Create Account"
+#~ msgstr "创建å¸å·"
+
+#~ msgid "or"
+#~ msgstr "或者"
+
+#~ msgid "return to OpenID login"
+#~ msgstr "返回登录"
+
+#, fuzzy
+#~ msgid "add avatar"
+#~ msgstr "修改头åƒ"
+
+#, fuzzy
+#~ msgid "Change avatar"
+#~ msgstr "修改标签"
+
+#, fuzzy
+#~ msgid "Your current avatar: "
+#~ msgstr "你的详细账户信æ¯ä¸º:"
+
+#, fuzzy
+#~ msgid "change avatar"
+#~ msgstr "修改已ä¿å­˜"
+
+#, fuzzy
+#~ msgid "Upload"
+#~ msgstr "上传/"
+
+#, fuzzy
+#~ msgid "delete avatar"
+#~ msgstr "删除回答"
+
+#, fuzzy
+#~ msgid "Delete These"
+#~ msgstr "删除回答"
+
+#~ msgid "answer permanent link"
+#~ msgstr "该回答的链接地å€"
+
+#~ msgid "permanent link"
+#~ msgstr "永久链接"
+
+#~ msgid "edit"
+#~ msgstr "编辑"
+
+#~ msgid ""
+#~ "report as offensive (i.e containing spam, advertising, malicious text, "
+#~ "etc.)"
+#~ msgstr "检举该帖为垃“水帖â€ï¼ˆå«å¹¿å‘Šã€äººèº«æ”»å‡»ã€æ¶æ„言论等)"
+
+#~ msgid "flag offensive"
+#~ msgstr "垃圾帖?"
+
+# todo please check this in chinese
+#~ msgid "undelete"
+#~ msgstr "å–消"
+
+#, fuzzy
+#~ msgid "swap with question"
+#~ msgstr "回答该问题"
+
+#, fuzzy
+#~ msgid "mark this answer as correct (click again to undo)"
+#~ msgstr "最佳答案(å†æ¬¡ç‚¹å‡»å–消æ“作)"
+
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "这个答案已ç»è¢«%(question_author)s标记为正确答案"
+
+#, fuzzy
+#~ msgid ""
+#~ "The question has been closed for the following reason <b>\"%(close_reason)"
+#~ "s\"</b> <i>by"
+#~ msgstr "问题因\"%(close_reason)s\"原因已被关闭"
+
+#~ msgid "close date %(closed_at)s"
+#~ msgstr "%(closed_at)s日关闭"
+
+#~ msgid "retag"
+#~ msgstr "更新标签"
+
+#~ msgid "reopen"
+#~ msgstr "打开"
+
+#~ msgid "close"
+#~ msgstr "关闭"
+
+#, fuzzy
+#~ msgid "one of these is required"
+#~ msgstr "必填项"
+
+#~ msgid "(required)"
+#~ msgstr "å¿…å¡«"
+
+#~ msgid "Toggle the real time Markdown editor preview"
+#~ msgstr "打开或者关闭Markdown编辑器的实时预览"
+
+#~ msgid "hide preview"
+#~ msgstr "ç¦ç”¨é¢„览"
+
+#~ msgid "Related tags"
+#~ msgstr "相关标签"
+
+# book.html line 123 must be empty in english
+#~ msgid "Interesting tags"
+#~ msgstr "感兴趣的标签"
+
+#, fuzzy
+#~ msgid "add"
+#~ msgstr "添加"
+
+#~ msgid "Ignored tags"
+#~ msgstr "忽略标签"
+
+#, fuzzy
+#~ msgid "Display tag filter"
+#~ msgstr "选择邮件标签过æ¥"
#~ msgid "Page not found"
#~ msgstr "此页未找到"
@@ -3913,12 +4440,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Save edit"
#~ msgstr "现在修改"
-#~ msgid "Cancel"
-#~ msgstr "å–消"
-
-#~ msgid "hide preview"
-#~ msgstr "ç¦ç”¨é¢„览"
-
#~ msgid "show preview"
#~ msgstr "å¯ç”¨é¢„览"
@@ -3954,11 +4475,11 @@ 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"
+#~ "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>给我们å馈。"
+#~ "这里列出社区所有的奖牌,以åŠæ¯ç±»å¥–牌获å–的所需æ¡ä»¶ã€‚点击<a href=\\"
+#~ "\"%(feedback_faq_url)s\\\">这里<\\a>给我们å馈。"
#~ msgid "Community badges"
#~ msgstr "奖牌等级"
@@ -4065,8 +4586,8 @@ 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 "
+#~ "- 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 "
@@ -4191,23 +4712,12 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ " <span class='big strong'>亲爱的访客</span>, 我们盼望收到你的å馈. \n"
#~ "请å‘é€ä½ çš„å馈信æ¯ç»™æˆ‘们,以帮助我们更好的改进 ."
-#~ msgid "(please enter a valid email)"
-#~ msgstr "请输入正确的email地å€"
-
#~ msgid "(this field is required)"
#~ msgstr "必填项"
#~ msgid "Send Feedback"
#~ msgstr "问题å馈"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Hello, this is a %(site_title)s forum feedback message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "你好, 这是从 %(site_title)s 网站å‘出的å馈信æ¯ã€‚\n"
-
#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
#~ msgstr "<p>亲爱的 %(receiving_user_name)s,</p>"
@@ -4285,30 +4795,22 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Share this question on %(site)s"
#~ msgstr "å‘布我的æ问到Twitter"
-#~ msgid "karma:"
-#~ msgstr "按积分排åº"
-
-#~ msgid "badges:"
-#~ msgstr "奖牌榜"
-
-#~ msgid "previous"
-#~ msgstr "上一页"
-
-#~ msgid "current page"
-#~ msgstr "当å‰é¡µ"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "第%(num)s页"
+#, fuzzy
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-#~ msgid "next page"
-#~ msgstr "下一页"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-#~ msgid "posts per page"
-#~ msgstr "æ¯é¡µæ˜¾ç¤ºï¼š"
+#~ msgid "current number of votes"
+#~ msgstr "当å‰æ€»ç¥¨æ•°"
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(status)s\""
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
#, fuzzy
#~ msgid "anonymous user"
@@ -4343,9 +4845,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "delete this comment"
#~ msgstr "删除这个留言"
-#~ msgid "edit"
-#~ msgstr "编辑"
-
#~ msgid "add comment"
#~ msgstr "添加评论"
@@ -4360,14 +4859,23 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgstr[0] "查看<strong>%(counter)s</strong>更多评论"
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "必填项"
+#~ msgid "%(username)s's website is %(url)s"
+#~ msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(status)s\""
-#~ msgid "(required)"
-#~ msgstr "å¿…å¡«"
+#~ msgid "previous"
+#~ msgstr "上一页"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "打开或者关闭Markdown编辑器的实时预览"
+#~ msgid "current page"
+#~ msgstr "当å‰é¡µ"
+
+#~ msgid "page number %(num)s"
+#~ msgstr "第%(num)s页"
+
+#~ msgid "next page"
+#~ msgstr "下一页"
+
+#~ msgid "posts per page"
+#~ msgstr "æ¯é¡µæ˜¾ç¤ºï¼š"
#~ msgid "responses for %(username)s"
#~ msgstr "回应%(username)s"
@@ -4395,193 +4903,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Privacy policy"
#~ msgstr "éšç§æ”¿ç­–"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-
-#~ msgid "current number of votes"
-#~ msgstr "当å‰æ€»ç¥¨æ•°"
-
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-
-#~ msgid "retag"
-#~ msgstr "更新标签"
-
-#~ msgid "reopen"
-#~ msgstr "打开"
-
-#~ msgid "close"
-#~ msgstr "关闭"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr "检举该帖为垃“水帖â€ï¼ˆå«å¹¿å‘Šã€äººèº«æ”»å‡»ã€æ¶æ„言论等)"
-
-#~ msgid "flag offensive"
-#~ msgstr "垃圾帖?"
-
-# todo please check this in chinese
-#~ msgid "undelete"
-#~ msgstr "å–消"
-
-#~ msgid "delete"
-#~ msgstr "删除"
-
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr "问题因\"%(close_reason)s\"原因已被关闭"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "%(closed_at)s日关闭"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer:\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers:\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "%(counter)s个回答:"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "最先回答显示在最å‰é¢"
-
-#~ msgid "oldest answers"
-#~ msgstr "最先回答"
-
-#~ msgid "newest answers will be shown first"
-#~ msgstr "最晚回答显示在最å‰é¢"
-
-#~ msgid "newest answers"
-#~ msgstr "最近回答"
-
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "投票次数最多的显示在最å‰é¢"
-
-#~ msgid "popular answers"
-#~ msgstr "å—欢迎的答案"
-
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "最佳答案(å†æ¬¡ç‚¹å‡»å–消æ“作)"
-
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "这个答案已ç»è¢«%(question_author)s标记为正确答案"
-
-#~ msgid "answer permanent link"
-#~ msgstr "该回答的链接地å€"
-
-#~ msgid "permanent link"
-#~ msgstr "永久链接"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "回答该问题"
-
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "或者"
-
-#~ msgid "email"
-#~ msgstr "邮件"
-
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "当有新回答的时候æ¯å¤©æ醒我一次"
-
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "当有新回答的时候æ¯å‘¨æ醒我一次"
-
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "当有新回答的时候立å³æ醒我一次"
-
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr "ä½ å¯ä»¥é€šè¿‡%(profile_url)s调整你的邮件更新频率"
-
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr "一旦你注册你就å¯ä»¥è®¢é˜…这里的任何更新"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "登录å‘布你的答案"
-
-#~ msgid "Your answer"
-#~ msgstr "您的回答"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå›žç­”此问题的人!"
-
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "ä½ å¯ä»¥åŒ¿å回答,然åŽç™»å½•"
-
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "仅仅为了回答你自己的问题而给一个答案"
-
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
-
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "登录å‘布你的答案"
-
-#~ msgid "Answer Your Own Question"
-#~ msgstr "回答你自己的问题"
-
-#~ msgid "Answer the question"
-#~ msgstr "回答该问题"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "被回å¤æœ€å¤šçš„问题"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "被回å¤æœ€å¤šçš„问题"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "邮件更新å–消"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "订阅最新问题"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "订阅最新问题"
-
-#~ msgid "Question tags"
-#~ msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
-
-#~ msgid "question asked"
-#~ msgstr "已问问题"
-
-#~ msgid "question was seen"
-#~ msgstr "æµè§ˆé‡"
-
-#~ msgid "times"
-#~ msgstr "次"
-
-#~ msgid "last updated"
-#~ msgstr "最åŽæ›´æ–°æ—¶é—´"
-
-#~ msgid "Related questions"
-#~ msgstr "相似的问题"
-
# page title
#~ msgid "Edit question"
#~ msgstr "修改问题"
@@ -4650,9 +4971,17 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Please, subscribe for the following tags:"
#~ msgstr "问题曾以"
+#, fuzzy
+#~ msgid "Subscribe"
+#~ msgstr "标记垃圾帖"
+
#~ msgid "Tag list"
#~ msgstr "标签列表"
+#, fuzzy
+#~ msgid "Sort by &raquo;"
+#~ msgstr "排åº"
+
#~ msgid "sorted alphabetically"
#~ msgstr "按å称的字æ¯å…ˆåŽé¡ºåºæŽ’åº"
@@ -4686,414 +5015,69 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Nothing found."
#~ msgstr "没有找到相关数æ®ã€‚"
-#~ msgid "Change email"
-#~ msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
-
-#~ msgid "Save your email address"
-#~ msgstr "ä¿å­˜æ‚¨çš„电å­é‚®ä»¶åœ°å€"
-
-#~ msgid "change %(email)s info"
-#~ msgstr "æ›´æ¢%(email)s电å­é‚®ä»¶"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "为什么邮件是必须的,查看 %(gravatar_faq_url)s"
-
-#~ msgid "Your new Email"
-#~ msgstr "你的新邮件地å€"
-
-#~ msgid "Your Email"
-#~ msgstr "你的邮件"
-
-#~ msgid "Save Email"
-#~ msgstr "ä¿å­˜é‚®ä»¶åœ°å€"
-
-#~ msgid "Validate email"
-#~ msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
-
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr "验è¯%(email)s ä¿¡æ¯æˆ–到%(change_email_url)s"
-
-#~ msgid "Email not changed"
-#~ msgstr "邮件地å€æœªä¿®æ”¹"
-
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr "旧邮件%(email)s被ä¿å­˜,ä½ å¯ä»¥åŽ»%(change_email_url)s修改"
-
-#~ msgid "Email changed"
-#~ msgstr "邮件地å€å·²æ”¹"
-
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "ä½ ç›®å‰çš„%(email)s邮件地å€å¯ä»¥è¢«ç”¨äºŽè¿™é‡Œ"
-
-#~ msgid "Email verified"
-#~ msgstr "邮件地å€ç¡®è®¤"
-
-#~ msgid "thanks for verifying email"
-#~ msgstr "感谢你确认邮件地å€"
-
-#~ 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 "Registration"
-#~ 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找哦昂选择其他å称. Email也是必须"
-#~ "的, 查看 %(gravatar_faq_url)s"
-
-#~ 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 "注册新Facebook账户信æ¯, 查看 %(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 "昵称"
-
-#~ msgid "Email address label"
-#~ msgstr "您的电å­é‚®ä»¶åœ°å€"
-
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "获å–商å“ä¿¡æ¯æ›´æ–°"
-
-#~ 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 "创建å¸å·"
-
-#~ msgid "Thank you for registering at our Q&A forum!"
-#~ msgstr "感谢你在我们的Q&A论å›æ³¨å†Œ"
-
-#~ msgid "Your account details are:"
-#~ msgstr "你的详细账户信æ¯ä¸º:"
-
-#~ msgid "Username:"
-#~ msgstr "用户å"
-
-#~ msgid "Password:"
-#~ msgstr "密ç "
-
-#~ msgid "Please sign in here:"
-#~ msgstr "请在这登录"
-
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr "您忠实的管ç†å‘˜"
-
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "æ¥è‡ªQ&A论å›çš„ç¥ç¦"
-
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr "请跟éšä»¥ä¸‹çš„链接æ¥ä½¿ç”¨è®ºå›:"
-
-#~ msgid "Following the link above will help us verify your email address."
-#~ 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 "Logout"
-#~ msgstr "退出登录"
-
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "请输入你的用户å,然åŽç™»å½•"
-
-#~ msgid "(or select another login method above)"
-#~ msgstr "(或从上é¢é€‰æ‹©ä¸€ä¸ªç™»å½•æ–¹å¼)"
-
-#~ msgid "Sign in"
-#~ msgstr "注册å¸å·"
-
-#~ msgid "User login"
-#~ msgstr "用户登录"
-
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "登录åŽ,你的关于 %(title)s %(summary)s 的回答将被å‘布"
-
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr "登录åŽ,你的关于 %(title)s %(summary)s 的问题将被å‘布"
-
-#~ 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 ""
-#~ "选择以下你最喜欢的方å¼ç™»å½•,你的扩展æœåŠ¡å¯†ç å°†è¢«ä¿æŠ¤ä¸”ä½ ä¸éœ€.è¦è®°ä½æˆ–创建一"
-#~ "个新密ç ."
-
-#~ 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选择添加一个新登录方å¼ã€‚"
-
-#~ 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登录。"
-
-#~ msgid ""
-#~ "Click on one of the icons below to add a new login method or re-validate "
-#~ "an existing one."
-#~ msgstr "点击以下icon,添加一个新的登录方å¼æˆ–者é‡éªŒè¯å·²ç»å­˜åœ¨çš„登录方å¼ã€‚"
-
-#~ 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。"
-
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr "请检查你的邮件并访问邮件里链接é‡è¿žä½ çš„账户"
-
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
-
-#~ msgid "Login failed, please try again"
-#~ msgstr "登录失败,请é‡è¯•"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "没有邮件"
-
-#~ msgid "Password"
-#~ msgstr "密ç "
-
-#~ msgid "Login"
-#~ msgstr "登录"
-
-#~ msgid ""
-#~ "To change your password - please enter the new one twice, then submit"
-#~ msgstr "修改密ç -请输入新密ç ä¸¤æ¬¡å¹¶æ交"
-
-#~ msgid "New password"
-#~ msgstr "新密ç "
-
-#~ msgid "Please, retype"
-#~ msgstr "确认密ç "
-
-#~ msgid "Here are your current login methods"
-#~ msgstr "这里有你的登录方å¼"
-
-#~ msgid "provider"
-#~ msgstr "æ供者"
-
-#~ msgid "last used"
-#~ msgstr "上次活动时间"
-
-#~ msgid "delete, if you like"
-#~ msgstr "å¯ä»¥åˆ é™¤"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "å–消"
-
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "还有其他问题?"
-
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "请输入你的邮件地å€åŠéªŒè¯ç "
-
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr "æ¢å¤è´¦æˆ·ï¼Œè¯·åœ¨ä¸‹é¢è¾“入你的邮件地å€"
-
-#~ msgid "recover your account via email"
-#~ msgstr "通过邮件æ¢å¤ä½ çš„账户"
-
-#~ msgid "Send a new recovery key"
-#~ msgstr "å‘é€ä¸€ä¸ªæ¢å¤å»º"
-
-#~ msgid "Recover your account via email"
-#~ msgstr "通过邮件æ¢å¤ä½ çš„账户"
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "为什么需è¦OpenID登录?"
-
-#~ msgid "with openid it is easier"
-#~ msgstr ""
-#~ "构建在OpenID网络认è¯ä¸Šçš„本系统,ä¸éœ€è¦ä½ æ³¨å†Œæ–°çš„å¸å·ï¼Œå³å¯ä½¿ç”¨æˆ‘们系统的所"
-#~ "有功能"
-
-#~ msgid "reuse openid"
-#~ msgstr "用åŒä¸€ä¸ªå¸å·å¯ç™»å½•äº’è”网所有激活OpenID的网站"
-
-#~ msgid "openid is widely adopted"
-#~ msgstr "全世界有1.6亿OpenIDå¸å·ï¼Œå’Œ10,000个支æŒOpenID的站点"
-
-#~ msgid "openid is supported open standard"
-#~ msgstr "OpenID是有开放标准,并且有相关的基金组织æ供支æŒ"
-
-#~ msgid "Find out more"
-#~ msgstr "查看更多"
-
-#~ msgid "Get OpenID"
-#~ msgstr "获å–OpenID"
-
-#~ msgid "Signup"
-#~ msgstr "注册å¸å·"
-
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "请点击下é¢ä»»ä½•ä¸€ä¸ªå›¾æ ‡ç™»å½•"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
-
-#~ msgid "Create login name and password"
-#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
-
-#~ msgid "Traditional signup info"
-#~ msgstr "传统登录信æ¯"
+#~ msgid "with %(author_name)s's contributions"
+#~ msgstr "%(author_name)s的贡献"
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr "请输入验è¯ä¿¡æ¯"
+#~ msgid "Search tips:"
+#~ msgstr "æœç´¢ä¸»é¢˜"
-#~ msgid "Create Account"
-#~ msgstr "创建å¸å·"
+#~ msgid "reset author"
+#~ msgstr "é‡ç½®ä½œè€…"
-#~ msgid "or"
+#~ msgid " or "
#~ msgstr "或者"
-#~ msgid "return to OpenID login"
-#~ msgstr "返回登录"
+#~ msgid "reset tags"
+#~ msgstr "é‡ç½®æ ‡ç­¾"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "修改头åƒ"
+#~ msgid "start over"
+#~ msgstr "é‡æ–°å¼€å§‹"
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "修改标签"
+#~ msgid " - to expand, or dig in by adding more tags and revising the query."
+#~ msgstr " - 通过添加更多标签和改进查询æ¥æ‰©å±•å’ŒæŒ–掘信æ¯"
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "你的详细账户信æ¯ä¸º:"
+#~ msgid "Search tip:"
+#~ msgstr "æœç´¢ä¸»é¢˜ :"
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "修改已ä¿å­˜"
+#~ msgid "add tags and a query to focus your search"
+#~ msgstr "添加标签和查询æ¡ä»¶è¿›è¡Œæ›´ç²¾ç¡®æŸ¥è¯¢"
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "上传/"
+#~ msgid "There are no unanswered questions here"
+#~ msgstr "没有未回答的问题"
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "删除回答"
+#~ msgid "No questions here. "
+#~ msgstr "还没有收è—"
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "删除回答"
-
-#~ msgid "answer tips"
-#~ msgstr "å—欢迎的æé—®"
-
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "请确认你的答案和这个主题相关"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
-
-#~ msgid "please try to provide details"
-#~ msgstr "请详细æ述您的问题"
-
-#~ msgid "be clear and concise"
-#~ msgstr "我们推è您使用中文æ述问题,这样å¯ä»¥å¾—到更多的答å¤æœºä¼šã€‚"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "查看常è§é—®é¢˜"
-
-#~ msgid "Markdown tips"
-#~ msgstr "标记æ å‚考"
-
-#~ msgid "*italic*"
-#~ msgstr "*斜体*表示*å·å†…字体为斜体"
-
-#~ msgid "**bold**"
-#~ msgstr "**粗体**表示2个*å·å†…字体为粗体"
-
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*斜体* , _斜体_表示*å·æˆ–_å·å†…字体为斜体"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**加粗** 或者 __加粗__ "
-
-#~ msgid "link"
-#~ msgstr "链接"
-
-#~ msgid "text"
-#~ msgstr "文本"
-
-#~ msgid "image"
-#~ msgstr "图片"
+#~ msgid "Please follow some questions or follow some users."
+#~ msgstr "当你查看问题时å¯ä»¥æ”¶è—"
-#~ msgid "numbered list:"
-#~ msgstr "列表:"
+#~ msgid "You can expand your search by "
+#~ msgstr "扩展你的查询"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "支æŒåŸºæœ¬çš„HTML标签"
+#~ msgid "resetting author"
+#~ msgstr "é‡ç½®ä½œè€…"
-#~ msgid "learn more about Markdown"
-#~ msgstr "有关Markdown详细说明"
+# book.html line 123 must be empty in english
+#~ msgid "resetting tags"
+#~ msgstr "é‡ç½®æ ‡ç­¾"
-#~ msgid "login to post question info"
-#~ msgstr "登录并æ交问题"
+#~ msgid "starting over"
+#~ msgstr "é‡æ–°å¼€å§‹"
-#, 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"
+#~ msgid "Please always feel free to ask your question!"
+#~ msgstr "å‘布你自己的问题"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "登录并å‘布问题"
+#~ msgid "Did not find what you were looking for?"
+#~ msgstr "你找的问题没有?"
-#~ msgid "Ask your question"
+#~ msgid "Please, post your question!"
#~ msgstr "现在æé—®"
+#~ msgid "subscribe to the questions feed"
+#~ 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"
@@ -5108,154 +5092,126 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ "each"
#~ msgstr "最多%(tag_count)s个标签,æ¯ä¸ªæ ‡ç­¾é•¿åº¦å°äºŽ%(max_chars)s个字符。"
-# footer.html
-#~ msgid "about"
-#~ msgstr "关于本站"
-
-#~ msgid "privacy policy"
-#~ msgstr "éšç§æ”¿ç­–"
-
-#~ msgid "give feedback"
-#~ msgstr "问题å馈"
-
-#~ msgid "back to home page"
-#~ msgstr "回到首页"
-
-#~ msgid "%(site)s logo"
-#~ msgstr "%(site)s logo"
-
-#~ msgid "questions"
-#~ msgstr "问题"
-
-#~ msgid "users"
-#~ msgstr "用户"
-
-#~ msgid "badges"
-#~ msgstr "奖牌榜"
-
-#~ msgid "ask a question"
-#~ msgstr "我è¦æé—®"
-
-#~ msgid "logout"
-#~ msgstr "退出登录"
-
-#~ msgid "login"
-#~ msgstr "登录"
-
-# book.html line 123 must be empty in english
-#~ msgid "settings"
-#~ msgstr "设置"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " %(counter)s Answer\n"
+#~ " "
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "\n"
+#~ "%(counter)s个回答:"
-#~ msgid "search"
-#~ msgstr "æœç´¢"
+#~ msgid "oldest answers will be shown first"
+#~ msgstr "最先回答显示在最å‰é¢"
-#~ msgid "question tips"
-#~ msgstr "å—欢迎的æé—®"
+#~ msgid "oldest answers"
+#~ msgstr "最先回答"
-#~ msgid "please ask a relevant question"
-#~ msgstr "请问与此社区相关的问题"
+#~ msgid "newest answers will be shown first"
+#~ msgstr "最晚回答显示在最å‰é¢"
-#~ msgid "please try provide enough details"
-#~ msgstr "请详细æ述您的问题"
+#~ msgid "newest answers"
+#~ msgstr "最近回答"
-# book.html line 123 must be empty in english
-#~ msgid "Interesting tags"
-#~ msgstr "感兴趣的标签"
+#~ msgid "most voted answers will be shown first"
+#~ msgstr "投票次数最多的显示在最å‰é¢"
-#~ msgid "Add"
-#~ msgstr "添加"
+#~ msgid "popular answers"
+#~ msgstr "å—欢迎的答案"
-#~ msgid "Ignored tags"
-#~ msgstr "忽略标签"
+#~ msgid "Answer Your Own Question"
+#~ msgstr "回答你自己的问题"
#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "选择邮件标签过æ¥"
+#~ msgid "Login/Signup to Answer"
+#~ msgstr "登录å‘布你的答案"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "你找的问题没有?"
+#~ msgid "Your answer"
+#~ msgstr "您的回答"
-#~ msgid "Please, post your question!"
-#~ msgstr "现在æé—®"
+#~ msgid "Be the first one to answer this question!"
+#~ msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå›žç­”此问题的人!"
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "订阅最新问题"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "ä½ å¯ä»¥åŒ¿å回答,然åŽç™»å½•"
-#~ msgid "rss feed"
-#~ msgstr "rss "
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "仅仅为了回答你自己的问题而给一个答案"
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "%(author_name)s的贡献"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
-#~ msgid "Search tips:"
-#~ msgstr "æœç´¢ä¸»é¢˜"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "登录å‘布你的答案"
-#~ msgid "reset author"
-#~ msgstr "é‡ç½®ä½œè€…"
+#~ msgid "Answer the question"
+#~ msgstr "回答该问题"
-#~ msgid " or "
+#, fuzzy
+#~ msgid " or"
#~ msgstr "或者"
-#~ msgid "reset tags"
-#~ msgstr "é‡ç½®æ ‡ç­¾"
-
-#~ msgid "start over"
-#~ msgstr "é‡æ–°å¼€å§‹"
-
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr " - 通过添加更多标签和改进查询æ¥æ‰©å±•å’ŒæŒ–掘信æ¯"
+#~ msgid "email"
+#~ msgstr "邮件"
-#~ msgid "Search tip:"
-#~ msgstr "æœç´¢ä¸»é¢˜ :"
+#, fuzzy
+#~ msgid "Question tools"
+#~ msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "添加标签和查询æ¡ä»¶è¿›è¡Œæ›´ç²¾ç¡®æŸ¥è¯¢"
+#, fuzzy
+#~ msgid "click to unfollow this question"
+#~ msgstr "被回å¤æœ€å¤šçš„问题"
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "没有未回答的问题"
+#, fuzzy
+#~ msgid "click to follow this question"
+#~ msgstr "被回å¤æœ€å¤šçš„问题"
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "还没有收è—"
+#~ msgid "email the updates"
+#~ msgstr "邮件更新å–消"
#, fuzzy
-#~ msgid "Please star (bookmark) some questions or follow some users."
-#~ msgstr "当你查看问题时å¯ä»¥æ”¶è—"
+#~ msgid "subscribe to this question rss feed"
+#~ msgstr "订阅最新问题"
-#~ msgid "You can expand your search by "
-#~ msgstr "扩展你的查询"
+#, fuzzy
+#~ msgid "subsribe to rss feed"
+#~ msgstr "订阅最新问题"
-#~ msgid "resetting author"
-#~ msgstr "é‡ç½®ä½œè€…"
+#~ msgid "question asked"
+#~ msgstr "已问问题"
-# book.html line 123 must be empty in english
-#~ msgid "resetting tags"
-#~ msgstr "é‡ç½®æ ‡ç­¾"
+#~ msgid "question was seen"
+#~ msgstr "æµè§ˆé‡"
-#~ msgid "starting over"
-#~ msgstr "é‡æ–°å¼€å§‹"
+#~ msgid "times"
+#~ msgstr "次"
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "å‘布你自己的问题"
+#~ msgid "last updated"
+#~ msgstr "最åŽæ›´æ–°æ—¶é—´"
-#~ msgid "Contributors"
-#~ msgstr "贡献者"
+#~ msgid "Related questions"
+#~ msgstr "相似的问题"
-#~ msgid "Related tags"
-#~ msgstr "相关标签"
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "当有新回答的时候æ¯å¤©æ醒我一次"
-#~ msgid "In:"
-#~ msgstr "选择:"
+#~ msgid "Notify me weekly when there are any new answers"
+#~ msgstr "当有新回答的时候æ¯å‘¨æ醒我一次"
-#~ msgid "see unanswered questions"
-#~ msgstr "查看没有回答的问题"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "当有新回答的时候立å³æ醒我一次"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "查看我收è—问题"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr "ä½ å¯ä»¥é€šè¿‡%(profile_url)s调整你的邮件更新频率"
-#~ msgid "Sort by:"
-#~ msgstr "排åº"
+#~ msgid "once you sign in you will be able to subscribe for any updates here"
+#~ msgstr "一旦你注册你就å¯ä»¥è®¢é˜…这里的任何更新"
#~ msgid "%(username)s's profile"
#~ msgstr "%(username)s用户概览"
@@ -5361,6 +5317,10 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "votes left"
#~ msgstr "剩余投票数"
+#, fuzzy
+#~ msgid "moderation"
+#~ msgstr "版主"
+
#~ msgid "%(username)s's current status is \"%(status)s\""
#~ msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(status)s\""
@@ -5382,6 +5342,9 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Subtract"
#~ msgstr "å‡åŽ»"
+#~ msgid "Add"
+#~ msgstr "添加"
+
#~ msgid "Send message to %(username)s"
#~ msgstr "å‘é€ä¿¡æ¯ç»™%(username)s"
@@ -5488,6 +5451,236 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "votes"
#~ msgstr "票"
+#~ msgid "answer tips"
+#~ msgstr "å—欢迎的æé—®"
+
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr "请确认你的答案和这个主题相关"
+
+#~ msgid "try to give an answer, rather than engage into a discussion"
+#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
+
+#~ msgid "please try to provide details"
+#~ msgstr "请详细æ述您的问题"
+
+#~ msgid "be clear and concise"
+#~ msgstr "我们推è您使用中文æ述问题,这样å¯ä»¥å¾—到更多的答å¤æœºä¼šã€‚"
+
+#~ msgid "see frequently asked questions"
+#~ msgstr "查看常è§é—®é¢˜"
+
+#~ msgid "Markdown tips"
+#~ msgstr "标记æ å‚考"
+
+#~ msgid "*italic*"
+#~ msgstr "*斜体*表示*å·å†…字体为斜体"
+
+#~ msgid "**bold**"
+#~ msgstr "**粗体**表示2个*å·å†…字体为粗体"
+
+#~ msgid "*italic* or _italic_"
+#~ msgstr "*斜体* , _斜体_表示*å·æˆ–_å·å†…字体为斜体"
+
+#~ msgid "**bold** or __bold__"
+#~ msgstr "**加粗** 或者 __加粗__ "
+
+#~ msgid "link"
+#~ msgstr "链接"
+
+#~ msgid "text"
+#~ msgstr "文本"
+
+#~ msgid "image"
+#~ msgstr "图片"
+
+#~ msgid "numbered list:"
+#~ msgstr "列表:"
+
+#~ msgid "basic HTML tags are also supported"
+#~ msgstr "支æŒåŸºæœ¬çš„HTML标签"
+
+#~ msgid "learn more about Markdown"
+#~ msgstr "有关Markdown详细说明"
+
+#~ msgid "ask a question"
+#~ msgstr "我è¦æé—®"
+
+#~ msgid "login to post question info"
+#~ msgstr "登录并æ交问题"
+
+#, 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"
+
+#~ msgid "Login/signup to post your question"
+#~ msgstr "登录并å‘布问题"
+
+#~ 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 "回到首页"
+
+#~ msgid "%(site)s logo"
+#~ msgstr "%(site)s logo"
+
+#~ 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 "view"
+#~ msgid_plural "views"
+#~ msgstr[0] "æµè§ˆ"
+
+#~ msgid "answer"
+#~ msgid_plural "answers"
+#~ msgstr[0] "回答"
+
+#~ msgid "vote"
+#~ msgid_plural "votes"
+#~ msgstr[0] "票"
+
+#~ msgid "see unanswered questions"
+#~ msgstr "查看没有回答的问题"
+
+#, fuzzy
+#~ msgid "see your followed questions"
+#~ msgstr "查看我收è—问题"
+
+#~ msgid "karma:"
+#~ msgstr "按积分排åº"
+
+#~ msgid "badges:"
+#~ msgstr "奖牌榜"
+
+#~ msgid "logout"
+#~ msgstr "退出登录"
+
+#~ msgid "login"
+#~ msgstr "登录"
+
+# book.html line 123 must be empty in english
+#~ msgid "settings"
+#~ msgstr "设置"
+
+#~ msgid "(please enter a valid email)"
+#~ msgstr "请输入正确的email地å€"
+
+#~ msgid "i like this post (click again to cancel)"
+#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+
+#~ msgid "i dont like this post (click again to cancel)"
+#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr "问题因\"%(close_reason)s\"原因已被关闭"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " %(counter)s Answer:\n"
+#~ " "
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers:\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "\n"
+#~ "%(counter)s个回答:"
+
+#~ msgid "mark this answer as favorite (click again to undo)"
+#~ msgstr "最佳答案(å†æ¬¡ç‚¹å‡»å–消æ“作)"
+
+#~ msgid "Question tags"
+#~ msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
+
+#~ msgid "questions"
+#~ msgstr "问题"
+
+#~ msgid "search"
+#~ msgstr "æœç´¢"
+
+#~ msgid "rss feed"
+#~ msgstr "rss "
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr "当你查看问题时å¯ä»¥æ”¶è—"
+
+#~ msgid "In:"
+#~ msgstr "选择:"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "所有问题"
+
+#~ msgid "Sort by:"
+#~ msgstr "排åº"
+
+#~ msgid "Email (not shared with anyone):"
+#~ msgstr "电å­é‚®ä»¶"
+
+#~ msgid "Keys to connect the site with external services like Facebook, etc."
+#~ msgstr "链接到其他æœåŠ¡ç½‘站的keys,åƒFackbookç­‰"
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "完æˆè¿™ä¸ªåŠ¨ä½œéœ€è¦æœ€å°ç§¯åˆ†"
+
+#, fuzzy
+#~ msgid "Site modes"
+#~ msgstr "网站"
+
+#~ msgid "Q&A forum website parameters and urls"
+#~ msgstr "网站å‚æ•°åŠurls"
+
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "主题设置"
+
+#~ msgid "Limits applicable to votes and moderation flags"
+#~ msgstr "é™åˆ¶åˆé€‚的投票数和标记"
+
+# book.html line 123 must be empty in english
+#~ 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 ""
+#~ "此选项用于定义在下é¢çš„5个分类中当å‰é»˜è®¤é‚®ä»¶æ›´æ–°é¢‘率:用户问的问题,用户问的"
+#~ "问题,个人选择,整个讨论(æ¯ä¸ªç”¨æˆ·æ ‡ç­¾è¿‡æ»¤çš„请求)和用户æ醒åŠç•™è¨€å›žåº”"
+
# index.html
#~ msgid "community wiki"
#~ msgstr "社区Wiki"
@@ -6122,9 +6315,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ "æ¯ã€‚用户å¯ä»¥é€‰æ‹©æ€§åœ°å¡«å†™ç”¨æˆ·èµ„æ–™ã€ä¸ªäººç½‘ç«™ã€å¹´é¾„ã€åŸŽå¸‚等信æ¯ï¼Œæˆ‘们收集这些"
#~ "内容为了使用户能够更容易和更满æ„地使用CNProgæ供的网页和æœåŠ¡ã€‚"
-#~ msgid "Other Services"
-#~ msgstr "其他æœåŠ¡"
-
#~ msgid "details on sharing data with third parties"
#~ msgstr ""
#~ "CNProgå¯èƒ½ä¼šæ”¶é›†å’Œç»Ÿè®¡ç”¨æˆ·è®¿é—®æœ¬ç«™çš„概况数æ®ã€‚例如,CNProgå¯èƒ½ä¼šæ£€æµ‹ç½‘站最"
diff --git a/askbot/locale/zh_CN/LC_MESSAGES/djangojs.mo b/askbot/locale/zh_CN/LC_MESSAGES/djangojs.mo
index 497e70f5..84c10487 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 3448d342..3f498230 100644
--- a/askbot/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/zh_CN/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-10-08 02:33-0500\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"
@@ -17,49 +17,328 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
-#: skins/default/media/js/post.js:532
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, c-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:162
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:223
+#, c-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:225
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:319
+#, c-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:320
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+#, c-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:324
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:340
+msgid "Create a password-protected account"
+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
+msgid "insufficient privilege"
+msgstr "用户æƒé™ä¸åœ¨æ“作范围"
+
+#: skins/common/media/js/post.js:283
+msgid "cannot pick own answer as best"
+msgstr "ä¸èƒ½è®¾ç½®è‡ªå·±çš„回答为最佳答案"
+
+#: skins/common/media/js/post.js:288
+msgid "please login"
+msgstr "注册或者登录"
+
+#: skins/common/media/js/post.js:290
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:291
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:292
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:294
+msgid "please confirm offensive"
+msgstr "确定è¦å½’类该帖为广告ã€äººèº«æ”»å‡»ã€æ¶æ„言论å—?"
+
+#: skins/common/media/js/post.js:295
+msgid "anonymous users cannot flag offensive posts"
+msgstr "匿å用户ä¸èƒ½æ“作,请先"
+
+#: skins/common/media/js/post.js:296
+msgid "confirm delete"
+msgstr "确定è¦åˆ é™¤/撤销删除该帖å—?"
+
+#: skins/common/media/js/post.js:297
+msgid "anonymous users cannot delete/undelete"
+msgstr "匿å用户ä¸èƒ½åˆ é™¤æˆ–撤销删除帖å­"
+
+#: skins/common/media/js/post.js:298
+msgid "post recovered"
+msgstr "æ“作æˆåŠŸï¼è¯¥å¸–å­å·²è¢«æ¢å¤ã€‚"
+
+#: skins/common/media/js/post.js:299
+msgid "post deleted"
+msgstr "æ“作æˆåŠŸï¼è¯¥å¸–å­å·²åˆ é™¤ã€‚"
+
+#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
msgid "Follow"
msgstr ""
-#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
-#, perl-format
+#: 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/default/media/js/post.js:546
+#: 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/default/media/js/post.js:1613
+#: 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
+msgid "add comment"
+msgstr "添加评论"
+
+#: skins/common/media/js/post.js:960
+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 ""
-#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
-#: skins/default/media/js/tag_selector.js:84
-#, perl-format
+#: 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 ""
-#: skins/default/media/js/user.js:129
+#: 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] ""
+
+#: 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 ""
-#: skins/default/media/js/user.js:161
-#, perl-format
+#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
+#, c-format
msgid "unfollow %s"
msgstr ""
-#: skins/default/media/js/user.js:164
-#, perl-format
+#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
+#, c-format
msgid "following %s"
msgstr ""
-#: skins/default/media/js/user.js:170
-#, perl-format
+#: 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
+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
+msgid "bold"
+msgstr "粗体"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "italic"
+msgstr "斜体"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "link"
+msgstr "超链接"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "quote"
+msgstr "引用"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "preformatted text"
+msgstr "代ç "
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "image"
+msgstr "图片"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "numbered list"
+msgstr "æ•°å­—ç¼–å·åˆ—表"
+
+#: skins/common/media/js/wmd/wmd.js:38
+msgid "bulleted list"
+msgstr "项目符å·åˆ—表"
+
+#: skins/common/media/js/wmd/wmd.js:39
+msgid "heading"
+msgstr "标题"
+
+#: skins/common/media/js/wmd/wmd.js:40
+msgid "horizontal bar"
+msgstr "水平线"
+
+#: skins/common/media/js/wmd/wmd.js:41
+msgid "undo"
+msgstr "撤销"
+
+#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+msgid "redo"
+msgstr "é‡åš"
+
+#: skins/common/media/js/wmd/wmd.js:53
+msgid "enter image url"
+msgstr ""
+"<b>输入图片地å€</b></p><p>示例:<br />http://www.example.com/image.jpg \"我"
+"的截图\""
+
+#: skins/common/media/js/wmd/wmd.js:54
+msgid "enter url"
+msgstr ""
+"<b>输入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的网站\"</"
+"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 ""
+
+#: 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/management/commands/askbot_add_test_content.py b/askbot/management/commands/askbot_add_test_content.py
new file mode 100644
index 00000000..eb29d1c5
--- /dev/null
+++ b/askbot/management/commands/askbot_add_test_content.py
@@ -0,0 +1,228 @@
+from django.core.management.base import NoArgsCommand
+from askbot.models import User
+
+
+NUM_USERS = 40
+# KEEP NEXT 3 SETTINGS LESS THAN OR EQUAL TO NUM_USERS!
+NUM_QUESTIONS = 40
+NUM_ANSWERS = 20
+NUM_COMMENTS = 20
+
+# To ensure that all the actions can be made, repute each user high positive
+# karma. This can be calculated dynamically - max of MIN_REP_TO_... settings
+INITIAL_REPUTATION = 500
+
+# Defining template inputs.
+USERNAME_TEMPLATE = "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
+
+CONTENT_TEMPLATE = """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
+ hustle crush it revenue traction platforms."""
+
+COMMENT_TEMPLATE = """Main differentiators business model micro economics
+ marketplace equity augmented reality human computer"""
+
+
+class Command(NoArgsCommand):
+
+ def print_if_verbose(self, text):
+ "Only print if user chooses verbose output"
+ if self.verbosity > 0:
+ print text
+
+ def create_users(self):
+ "Create the users and return an array of created users"
+ users = []
+
+ # 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):
+ s_idx = str(i)
+ user = User.objects.create_user(USERNAME_TEMPLATE % s_idx,
+ EMAIL_TEMPLATE % s_idx)
+ user.set_password(PASSWORD_TEMPLATE % s_idx)
+ user.reputation = INITIAL_REPUTATION
+ user.save()
+ self.print_if_verbose("Created User '%s'" % user.username)
+ users.append(user)
+ return users
+
+
+ def create_questions(self, users):
+ "Create the questions and return the last one as active question"
+
+ # Keeping the last active question entry for later use. Questions API
+ # might change, so we rely solely on User data entry API.
+ active_question = None
+ last_vote = False
+ # Each user posts a question
+ for user in users[:NUM_QUESTIONS]:
+ # Downvote/upvote the questions - It's reproducible, yet
+ # gives good randomized data
+ if not active_question is None:
+ if last_vote:
+ user.downvote(active_question)
+ self.print_if_verbose("%s downvoted a question"%(
+ user.username
+ ))
+ else:
+ user.upvote(active_question)
+ self.print_if_verbose("%s upvoted a question"%(
+ user.username
+ ))
+ last_vote = ~last_vote
+
+ # len(TAGS_TEMPLATE) tags per question - each tag is different
+ tags = " ".join([t%user.id for t in TAGS_TEMPLATE])
+ 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,)
+ )
+ return active_question
+
+
+ def create_answers(self, users, active_question):
+ "Create the answers for the active question, return the active answer"
+ active_answer = None
+ last_vote = False
+ # Now, fill the last added question with answers
+ for user in users[:NUM_ANSWERS]:
+ # We don't need to test for data validation, so ONLY users
+ # that aren't authors can post answer to the question
+ if not active_question.author is user:
+ # Downvote/upvote the answers - It's reproducible, yet
+ # gives good randomized data
+ if not active_answer is None:
+ if last_vote:
+ user.downvote(active_answer)
+ self.print_if_verbose("%s downvoted an answer"%(
+ user.username
+ ))
+ else:
+ user.upvote(active_answer)
+ self.print_if_verbose("%s upvoted an answer"%(
+ user.username
+ ))
+ last_vote = ~last_vote
+
+ active_answer = user.post_answer(
+ question = active_question,
+ body_text = ANSWER_TEMPLATE,
+ follow = True
+ )
+ self.print_if_verbose("%s posted an answer to the active question"%(
+ user.username
+ ))
+ # Upvote the active question
+ user.upvote(active_question)
+ # Follow the active question
+ user.follow_question(active_question)
+ self.print_if_verbose("%s followed the active question"%(
+ user.username)
+ )
+ # Subscribe to the active question
+ user.subscribe_for_followed_question_alerts()
+ self.print_if_verbose("%s subscribed to followed questions"%(
+ user.username)
+ )
+ return active_answer
+
+
+ def create_comments(self, users, active_question, active_answer):
+ """Create the comments for the active question and the active answer,
+ return 2 active comments - 1 question comment and 1 answer comment"""
+
+ active_question_comment = None
+ active_answer_comment = None
+
+ for user in users[:NUM_COMMENTS]:
+ active_question_comment = user.post_comment(
+ parent_post = active_question,
+ body_text = COMMENT_TEMPLATE
+ )
+ self.print_if_verbose("%s posted a question comment"%user.username)
+ active_answer_comment = user.post_comment(
+ parent_post = active_answer,
+ body_text = COMMENT_TEMPLATE
+ )
+ self.print_if_verbose("%s posted an answer comment"%user.username)
+
+ # Upvote the active answer
+ user.upvote(active_answer)
+
+ # Upvote active comments
+ if active_question_comment and active_answer_comment:
+ num_upvotees = NUM_COMMENTS - 1
+ for user in users[:num_upvotees]:
+ user.upvote(active_question_comment)
+ user.upvote(active_answer_comment)
+
+ return active_question_comment, active_answer_comment
+
+
+ def handle_noargs(self, **options):
+
+ self.verbosity = int(options.get("verbosity", 1))
+
+ # Create Users
+ users = self.create_users()
+
+ # Create Questions, vote for questions
+ active_question = self.create_questions(users)
+
+ # Create Answers, vote for the answers, vote for the active question
+ # vote for the active answer
+ active_answer = self.create_answers(users, active_question)
+
+ # Create Comments, vote for the active answer
+ active_question_comment, active_answer_comment = self.create_comments(
+ users, active_question, active_answer)
+
+ # Edit the active question, answer and comments
+ active_question.author.edit_question(
+ question = active_question,
+ title = TITLE_TEMPLATE % "EDITED",
+ body_text = CONTENT_TEMPLATE,
+ revision_comment = "EDITED",
+ force = True
+ )
+ self.print_if_verbose("User has edited the active question")
+
+ active_answer.author.edit_answer(
+ answer = active_answer,
+ body_text = COMMENT_TEMPLATE,
+ force = True
+ )
+ self.print_if_verbose("User has edited the active answer")
+
+ active_answer_comment.user.edit_comment(
+ comment = 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,
+ body_text = ANSWER_TEMPLATE
+ )
+ self.print_if_verbose("User has edited the active question comment")
+
+ # Accept best answer
+ active_question.author.accept_best_answer(
+ answer = active_answer,
+ force = True,
+ )
+ self.print_if_verbose("User has accepted a best answer")
+
+ self.print_if_verbose("DONE")
diff --git a/askbot/management/commands/send_email.py b/askbot/management/commands/send_email.py
new file mode 100644
index 00000000..2493c51b
--- /dev/null
+++ b/askbot/management/commands/send_email.py
@@ -0,0 +1,24 @@
+from askbot.utils.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
+
+class Command(BaseCommand):
+ args = '<recipients email>'
+ help = 'Sends a test email to the specified email address'
+
+ def handle(self, *args, **options):
+
+ if len(args) != 1:
+ raise CommandError('Recipients email address required')
+
+ try:
+ validate_email(args[0])
+ except ValidationError:
+ raise CommandError('%s is not a valid email address' % (args[0]))
+
+ send_mail(
+ subject_line = 'Askbot Mail Test',
+ body_text = 'Askbot Mail Test',
+ recipient_list = [args[0]],
+ )
diff --git a/askbot/management/commands/send_email_alerts.py b/askbot/management/commands/send_email_alerts.py
index 330e1cc9..c904cdde 100644
--- a/askbot/management/commands/send_email_alerts.py
+++ b/askbot/management/commands/send_email_alerts.py
@@ -3,8 +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, QuestionRevision
-from askbot.models import AnswerRevision, Activity, EmailFeedSetting
+from askbot.models import User, Question, Answer, Tag, PostRevision
+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 _
@@ -336,7 +336,7 @@ class Command(NoArgsCommand):
#collect info on all sorts of news that happened after
#the most recent emailing to the user about this question
- q_rev = QuestionRevision.objects.filter(
+ q_rev = PostRevision.objects.question_revisions().filter(
question=q,
revised_at__gt=emailed_at
)
@@ -359,7 +359,7 @@ class Command(NoArgsCommand):
new_ans = new_ans.exclude(author=user)
meta_data['new_ans'] = len(new_ans)
- ans_rev = AnswerRevision.objects.filter(
+ ans_rev = PostRevision.objects.answer_revisions().filter(
answer__question = q,
answer__deleted = False,
revised_at__gt = emailed_at
diff --git a/askbot/middleware/anon_user.py b/askbot/middleware/anon_user.py
index adaf6fd2..7cd9279d 100644
--- a/askbot/middleware/anon_user.py
+++ b/askbot/middleware/anon_user.py
@@ -63,7 +63,8 @@ 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 request.user.is_authenticated() and \
+ if hasattr(request, 'user') and \
+ request.user.is_authenticated() and \
'askbot_visitor' not in request.COOKIES :
#import datetime
#max_age = 365*24*60*60
diff --git a/askbot/middleware/forum_mode.py b/askbot/middleware/forum_mode.py
new file mode 100644
index 00000000..874b5559
--- /dev/null
+++ b/askbot/middleware/forum_mode.py
@@ -0,0 +1,35 @@
+from django.http import HttpResponseRedirect
+from django.utils.translation import ugettext as _
+from django.conf import settings
+from django.core.urlresolvers import resolve
+
+from askbot.conf import settings as askbot_settings
+
+PROTECTED_URLS = [
+ 'about',
+ 'feeds',
+ 'privacy',
+ 'tags',
+ 'badges',
+ 'questions',
+ 'question',
+ 'question_revisions',
+ 'users',
+ 'edit_user',
+ 'faq',
+ 'user_profile',
+ 'answer_revisions',
+ 'user_subscriptions']
+
+
+class ForumModeMiddleware(object):
+
+ def process_request(self, request):
+ if (askbot_settings.ASKBOT_CLOSED_FORUM_MODE
+ and request.user.is_anonymous()
+ and resolve(request.path).url_name in PROTECTED_URLS):
+ request.user.message_set.create(_('Please log in to use %s') % \
+ askbot_settings.APP_SHORT_NAME)
+ return HttpResponseRedirect(settings.LOGIN_URL)
+ else:
+ return None
diff --git a/askbot/migrations/0050_move_qa_revisions_to_postrevision.py b/askbot/migrations/0050_move_qa_revisions_to_postrevision.py
index 3067a87c..36c46551 100644
--- a/askbot/migrations/0050_move_qa_revisions_to_postrevision.py
+++ b/askbot/migrations/0050_move_qa_revisions_to_postrevision.py
@@ -1,8 +1,10 @@
# encoding: utf-8
import datetime
+
+from django.db import models
+
from south.db import db
from south.v2 import DataMigration
-from django.db import models
class Migration(DataMigration):
@@ -33,17 +35,19 @@ class Migration(DataMigration):
is_anonymous=source_revision.is_anonymous
)
+ # INFO: There's no need to migrate also the related Activity instances
+ # - it's because `revision edited` Activities point to Question&Answer instances
+ # ans not to their relevant revisions. (BTW this might be considered a bug)
+
+
def forwards(self, orm):
+ # Process revisions
for qr in orm.QuestionRevision.objects.all():
self.copy_revision(orm=orm, source_revision=qr)
for ar in orm.AnswerRevision.objects.all():
self.copy_revision(orm=orm, source_revision=ar)
- # TODO:
- # In the next migration (0050) QuestionRevision and AnswerRevision tables are dropped.
- # So if there is anything else to migrate here, we have to figure that out before merging this to trunk.
-
def backwards(self, orm):
"Write your backwards methods here."
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index 6e23c8f3..6a609923 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -19,10 +19,10 @@ import askbot
from askbot import exceptions as askbot_exceptions
from askbot import const
from askbot.conf import settings as askbot_settings
-from askbot.models.question import Question, QuestionRevision
+from askbot.models.question import Question
from askbot.models.question import QuestionView, AnonymousQuestion
from askbot.models.question import FavoriteQuestion
-from askbot.models.answer import Answer, AnonymousAnswer, AnswerRevision
+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
@@ -343,9 +343,22 @@ def user_assert_can_unaccept_best_answer(self, answer = None):
low_rep_error_message = low_rep_error_message
)
return # success
+
+ elif self.is_administrator() or self.is_moderator():
+ will_be_able_at = (answer.added_at +
+ datetime.timedelta(days=askbot_settings.MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER))
+
+ if datetime.datetime.now() < will_be_able_at:
+ error_message = _(
+ 'Sorry, you will be able to accept this answer '
+ 'only after %(will_be_able_at)s'
+ ) % {'will_be_able_at': will_be_able_at.strftime('%d/%m/%Y')}
+ else:
+ return
+
else:
error_message = _(
- 'Sorry, only original author of the question '
+ 'Sorry, only moderators or original author of the question '
' - %(username)s - can accept or unaccept the best answer'
) % {'username': answer.get_owner().username}
@@ -2644,13 +2657,11 @@ __all__ = [
'signals',
'Question',
- 'QuestionRevision',
'QuestionView',
'FavoriteQuestion',
'AnonymousQuestion',
'Answer',
- 'AnswerRevision',
'AnonymousAnswer',
'PostRevision',
diff --git a/askbot/models/answer.py b/askbot/models/answer.py
index a694e737..a01b6e81 100644
--- a/askbot/models/answer.py
+++ b/askbot/models/answer.py
@@ -1,19 +1,8 @@
import datetime
from django.db import models
-from django.utils.http import urlquote as django_urlquote
-from django.utils.translation import ugettext as _
-from django.core.urlresolvers import reverse
-from django.core import exceptions as django_exceptions
-from django.conf import settings
-from askbot import exceptions
-from askbot.models.base import AnonymousContent, DeletableContent
-from askbot.models.post import PostRevision
-from askbot.models.base import parse_post_text, parse_and_save_post
+from askbot.models.base import AnonymousContent
from askbot.models import content
from askbot import const
-from askbot.utils.slug import slugify
-from askbot.utils import markup
-from askbot.utils.html import sanitize_html
class AnswerManager(models.Manager):
def create_new(
@@ -66,11 +55,12 @@ class AnswerManager(models.Manager):
pass
return answer
- 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_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):
@@ -81,233 +71,21 @@ class AnswerManager(models.Manager):
# cursor.execute(self.GET_ANSWERS_FROM_USER_QUESTIONS, [user_id, user_id])
# return cursor.fetchall()
-class Answer(content.Content, DeletableContent):
+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'
- parse = parse_post_text
- parse_and_save = parse_and_save_post
is_anonymous = False #answers are never anonymous - may change
- def 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 get_updated_activity_data(self, created = False):
- #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
-
- def get_tag_names(self):
- """return tag names on the question"""
- return self.question.get_tag_names()
-
- def 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 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
- """
- 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``
- """
- #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 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 AnswerRevision.objects.create(
- answer=self,
- author=author,
- revised_at=revised_at,
- text=text,
- summary=comment,
- revision=rev_no
- )
-
- def save(self, *args, **kwargs):
- super(Answer, self).save(*args, **kwargs);
- if 'postgres' in settings.DATABASE_ENGINE:
- #hit the database to trigger update of full text search vector
- self.question.save()
-
- def get_origin_post(self):
- return self.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."""
- order_number = 0
- for answer in answers:
- if self == answer:
- break
- order_number += 1
- return int(order_number/const.ANSWERS_PAGE_SIZE) + 1
-
- def 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 get_user_vote(self, user):
- 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 get_question_title(self):
- return self.question.title
-
- def get_absolute_url(self):
- return u'%(base)s%(slug)s?answer=%(id)d#answer-container-%(id)d' % \
- {
- 'base': reverse('question', args=[self.question.id]),
- 'slug': django_urlquote(slugify(self.question.title)),
- 'id': self.id
- }
-
- def __unicode__(self):
- return self.html
-
-
-class AnswerRevision(PostRevision):
- """A revision of an Answer."""
-
- class Meta:
- app_label = 'askbot'
- proxy = True
-
-
class AnonymousAnswer(AnonymousContent):
question = models.ForeignKey('Question', related_name='anonymous_answers')
diff --git a/askbot/models/base.py b/askbot/models/base.py
index b4492f0f..5ac2ac7a 100644
--- a/askbot/models/base.py
+++ b/askbot/models/base.py
@@ -1,18 +1,20 @@
import datetime
import cgi
-from django.core.urlresolvers import reverse
+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
-import logging
+
#todo: following methods belong to a future common post class
def parse_post_text(post):
@@ -216,102 +218,6 @@ class DeletableContent(models.Model):
app_label = 'askbot'
-class ContentRevision(models.Model):
- """
- Base class for QuestionRevision and AnswerRevision
- """
- QUESTION_REVISION_TEMPLATE_NO_TAGS = (
- '<h3>%(title)s</h3>\n'
- '<div class="text">%(html)s</div>\n'
- )
-
- QUESTION_REVISION = 1
- ANSWER_REVISION = 2
- REVISION_TYPE_CHOICES = (
- (QUESTION_REVISION, 'question'),
- (ANSWER_REVISION, 'answer'),
- )
- REVISION_TYPE_CHOICES_DICT = dict(REVISION_TYPE_CHOICES)
-
- revision_type = models.SmallIntegerField(choices=REVISION_TYPE_CHOICES)
-
- revision = models.PositiveIntegerField()
- author = models.ForeignKey(User, related_name='%(class)ss')
- revised_at = models.DateTimeField()
- summary = models.CharField(max_length=300, blank=True)
- text = models.TextField()
-
- # Question-specific fields
- title = models.CharField(max_length=300, blank=True, default='')
- tagnames = models.CharField(max_length=125, blank=True, default='')
- is_anonymous = models.BooleanField(default=False)
-
- class Meta:
- abstract = True
- app_label = 'askbot'
- ordering = ('-revision',)
-
- def revision_type_str(self):
- return self.REVISION_TYPE_CHOICES_DICT[self.revision_type]
-
- def __unicode__(self):
- 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
-
- def save(self, **kwargs):
- """Determines the revistion type and then looks up the next available revision number if not set."""
-
- if not self.revision_type:
- # HACK: determine revision_type based on class name - until we have a better way or until make a switch to PostRevision
- # After `revision_type` is set, we can just use it
- if self.__class__.__name__ == 'QuestionRevision':
- self.revision_type = self.QUESTION_REVISION
- elif self.__class__.__name__ == 'AnswerRevision':
- self.revision_type = self.ANSWER_REVISION
-
- if not self.revision:
- # TODO: Maybe use Max() aggregation?
- # TODO: Handle IntegrityError if revision id is already occupied?
- self.revision = self.parent().revisions.values_list('revision', flat=True)[0] + 1
-
- super(ContentRevision, self).save(**kwargs)
-
- def is_question_revision(self):
- return self.revision_type == self.QUESTION_REVISION
-
- def is_answer_revision(self):
- return self.revision_type == self.ANSWER_REVISION
-
- @models.permalink
- def get_absolute_url(self):
- if self.is_question_revision():
- return 'question_revisions', (self.question.id,), {}
- elif self.is_answer_revision():
- return 'answer_revisions', (), {'id':self.answer.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
-
- def as_html(self, **kwargs):
- markdowner = markup.get_parser()
- sanitized_html = sanitize_html(markdowner.convert(self.text))
-
- if self.is_question_revision():
- return self.QUESTION_REVISION_TEMPLATE_NO_TAGS % {
- 'title': self.title,
- 'html': sanitized_html
- }
- elif self.is_answer_revision():
- return sanitized_html
-
-
-
class AnonymousContent(models.Model):
"""
Base class for AnonymousQuestion and AnonymousAnswer
diff --git a/askbot/models/content.py b/askbot/models/content.py
index c1760593..f2645cc2 100644
--- a/askbot/models/content.py
+++ b/askbot/models/content.py
@@ -1,15 +1,25 @@
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):
"""
@@ -18,6 +28,10 @@ class Content(models.Model):
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)
@@ -48,6 +62,46 @@ class Content(models.Model):
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
@@ -396,3 +450,377 @@ class Content(models.Model):
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
index 9022a7ec..cbec7d33 100644
--- a/askbot/models/meta.py
+++ b/askbot/models/meta.py
@@ -49,6 +49,10 @@ class Vote(base.MetaContent, base.UserContent):
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
diff --git a/askbot/models/post.py b/askbot/models/post.py
index 17f0eb2c..d5c0c6df 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -1,14 +1,63 @@
from django.db import models
+from django.core.exceptions import ValidationError
-from askbot.models.base import ContentRevision
+from askbot.utils import markup
+from askbot.utils.html import sanitize_html
#class Post(models.Model):
# pass
-class PostRevision(ContentRevision):
+class PostRevisionManager(models.Manager):
+ def create(self, *kargs, **kwargs):
+ raise NotImplementedError # Prevent accidental creation of PostRevision instance without `revision_type` set
+
+ def create_question_revision(self, *kargs, **kwargs):
+ kwargs['revision_type'] = self.model.QUESTION_REVISION
+ return super(PostRevisionManager, self).create(*kargs, **kwargs)
+
+ def create_answer_revision(self, *kargs, **kwargs):
+ kwargs['revision_type'] = self.model.ANSWER_REVISION
+ return super(PostRevisionManager, self).create(*kargs, **kwargs)
+
+ def question_revisions(self):
+ return self.filter(revision_type=self.model.QUESTION_REVISION)
+
+ def answer_revisions(self):
+ return self.filter(revision_type=self.model.ANSWER_REVISION)
+
+
+class PostRevision(models.Model):
+ QUESTION_REVISION_TEMPLATE_NO_TAGS = (
+ '<h3>%(title)s</h3>\n'
+ '<div class="text">%(html)s</div>\n'
+ )
+
+ QUESTION_REVISION = 1
+ ANSWER_REVISION = 2
+ REVISION_TYPE_CHOICES = (
+ (QUESTION_REVISION, 'question'),
+ (ANSWER_REVISION, 'answer'),
+ )
+ 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)
+ revision_type = models.SmallIntegerField(choices=REVISION_TYPE_CHOICES)
+
+ revision = models.PositiveIntegerField()
+ author = models.ForeignKey('auth.User', related_name='%(class)ss')
+ revised_at = models.DateTimeField()
+ summary = models.CharField(max_length=300, blank=True)
+ text = models.TextField()
+
+ # Question-specific fields
+ title = models.CharField(max_length=300, blank=True, default='')
+ tagnames = models.CharField(max_length=125, blank=True, default='')
+ is_anonymous = models.BooleanField(default=False)
+
+ objects = PostRevisionManager()
+
class Meta:
# INFO: This `unique_together` constraint might be problematic for databases in which
# 2+ NULLs cannot be stored in an UNIQUE column.
@@ -16,3 +65,62 @@ class PostRevision(ContentRevision):
unique_together = (('answer', 'revision'), ('question', 'revision'))
ordering = ('-revision',)
app_label = 'askbot'
+
+ def revision_type_str(self):
+ return self.REVISION_TYPE_CHOICES_DICT[self.revision_type]
+
+ def __unicode__(self):
+ 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
+
+ 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()):
+ raise ValidationError('Revision_type doesn`t match values in question/answer fields.')
+
+ def save(self, **kwargs):
+ # Determine the revision number, if not set
+ if not self.revision:
+ # TODO: Maybe use Max() aggregation? Or `revisions.count() + 1`
+ self.revision = self.parent().revisions.values_list('revision', flat=True)[0] + 1
+
+ # Make sure that everything is ok, in particular that `revision_type` and `revision` are set to valid values
+ self.full_clean()
+
+ super(PostRevision, self).save(**kwargs)
+
+ def is_question_revision(self):
+ return self.revision_type == self.QUESTION_REVISION
+
+ def is_answer_revision(self):
+ return self.revision_type == self.ANSWER_REVISION
+
+ @models.permalink
+ def get_absolute_url(self):
+ if self.is_question_revision():
+ return 'question_revisions', (self.question.id,), {}
+ elif self.is_answer_revision():
+ return 'answer_revisions', (), {'id':self.answer.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
+
+ def as_html(self, **kwargs):
+ markdowner = markup.get_parser()
+ sanitized_html = sanitize_html(markdowner.convert(self.text))
+
+ if self.is_question_revision():
+ return self.QUESTION_REVISION_TEMPLATE_NO_TAGS % {
+ 'title': self.title,
+ 'html': sanitized_html
+ }
+ elif self.is_answer_revision():
+ return sanitized_html
diff --git a/askbot/models/question.py b/askbot/models/question.py
index 72a0a3bc..3d17a388 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -4,28 +4,19 @@ 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.utils.http import urlquote as django_urlquote
-from django.core.urlresolvers import reverse
-from django.core import exceptions as django_exceptions
from django.contrib.sitemaps import ping_google
from django.utils.translation import ugettext as _
import askbot
import askbot.conf
-from askbot import exceptions
from askbot.models.tag import Tag
from askbot.models.base import AnonymousContent
-from askbot.models.base import DeletableContent
from askbot.models.post import PostRevision
from askbot.models.base import BaseQuerySetManager
-from askbot.models.base import parse_post_text
-from askbot.models.base import parse_and_save_post
from askbot.models import content
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 markup
-from askbot.utils.html import sanitize_html
from askbot.utils import mysql
#todo: too bad keys are duplicated see const sort methods
@@ -80,6 +71,7 @@ def get_tag_summary_from_questions(questions):
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,
@@ -90,7 +82,8 @@ class QuestionQuerySet(models.query.QuerySet):
tagnames = None,
text = None
):
-
+ #todo: some work from this method will go to thread
+ #and some - merged with the Answer.objects.create_new
question = Question(
title = title,
author = author,
@@ -129,6 +122,7 @@ class QuestionQuerySet(models.query.QuerySet):
"""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]
@@ -141,12 +135,12 @@ class QuestionQuerySet(models.query.QuerySet):
| models.Q(answers__text__search = search_query)
)
elif 'postgresql_psycopg2' in askbot.get_database_engine_name():
- rank_clause = "ts_rank(question.text_search_vector, to_tsquery(%s))";
+ 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 @@ to_tsquery(%s)'],
+ 'where': ['text_search_vector @@ plainto_tsquery(%s)'],
'params': extra_params,
'select_params': extra_params,
}
@@ -167,7 +161,7 @@ class QuestionQuerySet(models.query.QuerySet):
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',
@@ -361,6 +355,7 @@ class QuestionQuerySet(models.query.QuerySet):
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(
@@ -377,6 +372,7 @@ class QuestionQuerySet(models.query.QuerySet):
``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:
@@ -405,6 +401,9 @@ class QuestionQuerySet(models.query.QuerySet):
#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
@@ -415,6 +414,11 @@ class QuestionQuerySet(models.query.QuerySet):
set(Answer.objects.filter(id__in=a_id).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
+ #on the main page, we might also want to completely hide fake gravatars
+ #and show only real images and the visitors - even if he does not have
+ #a real image and try to prompt him/her to upload a picture
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]
@@ -431,6 +435,7 @@ class QuestionQuerySet(models.query.QuerySet):
#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))
@@ -440,6 +445,7 @@ class QuestionQuerySet(models.query.QuerySet):
"""
update counter+1 when user browse question page
"""
+ #todo: moves to thread
self.filter(id=question.id).update(view_count = question.view_count + 1)
@@ -447,14 +453,19 @@ 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, DeletableContent):
+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')
@@ -476,6 +487,13 @@ class Question(content.Content, DeletableContent):
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()
@@ -483,29 +501,13 @@ class Question(content.Content, DeletableContent):
class Meta(content.Content.Meta):
db_table = u'question'
- parse = parse_post_text
- parse_and_save = parse_and_save_post
-
- def 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 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
"""
+ #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)
@@ -515,6 +517,7 @@ class Question(content.Content, DeletableContent):
"""updates the denormalized field 'answer_count'
on the question
"""
+ #todo: goes to thread
self.answer_count = self.get_answers().count()
if save:
self.save()
@@ -522,6 +525,7 @@ class Question(content.Content, DeletableContent):
def update_favorite_count(self):
"""update favourite_count for given question
"""
+ #todo: goes to thread
self.favourite_count = FavoriteQuestion.objects.filter(
question=self
).count()
@@ -538,6 +542,7 @@ class Question(content.Content, DeletableContent):
be very expensive - this function will benefit from
some sort of optimization
"""
+ #todo: goes to thread
#print datetime.datetime.now()
def get_data():
@@ -565,13 +570,6 @@ class Question(content.Content, DeletableContent):
return LazyList(get_data)
- def get_page_number(self, answers = None):
- """question always appears on its own
- first page by definition. The answers
- parameter is not used here. The extra parameter is necessary
- to maintain generality of the function call signature"""
- return 1
-
def get_similarity(self, other_question = None):
"""return number of tags in the other question
that overlap with the current question (self)
@@ -667,6 +665,7 @@ class Question(content.Content, DeletableContent):
"""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(
@@ -713,35 +712,6 @@ class Question(content.Content, DeletableContent):
| models.Q(deleted_by = user)
)
- def get_updated_activity_data(self, created = False):
- if created:
- return const.TYPE_ACTIVITY_ASK_QUESTION, self
- else:
- latest_revision = self.get_latest_revision()
- return const.TYPE_ACTIVITY_UPDATE_QUESTION, latest_revision
-
- def 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 retag(self, retagged_by=None, retagged_at=None, tagnames=None, silent=False):
if None in (retagged_by, retagged_at, tagnames):
raise Exception('arguments retagged_at, retagged_by and tagnames are required')
@@ -759,7 +729,7 @@ class Question(content.Content, DeletableContent):
# Create a new revision
latest_revision = self.get_latest_revision()
- QuestionRevision.objects.create(
+ PostRevision.objects.create_question_revision(
question = self,
title = latest_revision.title,
author = retagged_by,
@@ -769,90 +739,6 @@ class Question(content.Content, DeletableContent):
text = latest_revision.text
)
- def get_origin_post(self):
- return self
-
- def 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 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 QuestionRevision.objects.create(
- 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 get_tag_names(self):
- """Creates a list of Tag names from the ``tagnames`` attribute."""
- return self.tagnames.split(u' ')
-
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
@@ -860,16 +746,6 @@ class Question(content.Content, DeletableContent):
"""
self.tagnames = u' '.join(tag_names)
- def tagname_meta_generator(self):
- return u','.join([unicode(tag) for tag in self.get_tag_names()])
-
- def get_absolute_url(self, no_slug = False):
- url = reverse('question', args=[self.id])
- if no_slug == True:
- return url
- else:
- return url + django_urlquote(self.slug)
-
def _get_slug(self):
return slugify(self.title)
@@ -881,26 +757,6 @@ class Question(content.Content, DeletableContent):
return FavoriteQuestion.objects.filter(question=self, user=user).count() > 0
- def get_answer_count_by_user(self, user_id):
- from askbot.models.answer import Answer
- query_set = Answer.objects.filter(author__id=user_id)
- return query_set.filter(question=self).count()
-
- def get_question_title(self):
- 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
-
- def get_revision_url(self):
- return reverse('question_revisions', args=[self.id])
-
def get_last_update_info(self):
when, who = self.post_get_last_update_info()
@@ -971,9 +827,6 @@ class Question(content.Content, DeletableContent):
else:
return None
- def __unicode__(self):
- return self.title
-
if getattr(settings, 'USE_SPHINX_SEARCH', False):
from djangosphinx.models import SphinxSearch
Question.add_to_class(
@@ -1006,13 +859,6 @@ class FavoriteQuestion(models.Model):
def __unicode__(self):
return '[%s] favorited at %s' %(self.user, self.added_at)
-class QuestionRevision(PostRevision):
- """A revision of a Question."""
-
- class Meta:
- app_label = 'askbot'
- proxy = True
-
class AnonymousQuestion(AnonymousContent):
"""question that was asked before logging in
diff --git a/askbot/search/sphinx/sphinx.conf b/askbot/search/sphinx/sphinx.conf
index 7ff44604..cdf0f004 100644
--- a/askbot/search/sphinx/sphinx.conf
+++ b/askbot/search/sphinx/sphinx.conf
@@ -25,12 +25,13 @@ source src_askbot
INNER JOIN \
( \
SELECT MAX(id) as id, question_id \
- FROM question_revision \
+ FROM askbot_postrevision \
+ WHERE revision_type = 1 \
GROUP BY question_id \
) \
AS mqr \
ON q.id=mqr.question_id \
- INNER JOIN question_revision AS qr ON qr.id=mqr.id \
+ INNER JOIN askbot_postrevision AS qr ON qr.id=mqr.id \
LEFT JOIN \
( \
SELECT GROUP_CONCAT(answer_current.text SEPARATOR '. ') AS text, \
@@ -42,12 +43,13 @@ source src_askbot
INNER JOIN \
( \
SELECT MAX(id) as id, answer_id \
- FROM answer_revision \
+ FROM askbot_postrevision \
+ WHERE revision_type = 2 \
GROUP BY answer_id \
) \
AS mar \
ON mar.answer_id = a.id \
- INNER JOIN answer_revision AS ar ON ar.id=mar.id \
+ INNER JOIN askbot_postrevision AS ar ON ar.id=mar.id \
WHERE a.deleted=0 \
) \
AS answer_current \
diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py
index 83fe9997..a6d257ae 100644
--- a/askbot/setup_templates/settings.py
+++ b/askbot/setup_templates/settings.py
@@ -102,6 +102,7 @@ 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',
@@ -176,6 +177,7 @@ CACHE_BACKEND = 'locmem://'
#needed for django-keyedcache
CACHE_TIMEOUT = 6000
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'
@@ -199,8 +201,10 @@ logging.basicConfig(
# ASKBOT_URL = 'forum/'
#
ASKBOT_URL = '' #no leading slash, default = '' empty string
+ASKBOT_TRANSLATE_URL = True #translate specific URLs
_ = lambda v:v #fake translation function for the login url
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/')
@@ -208,11 +212,11 @@ ALLOW_UNICODE_SLUGS = False
ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange
#Celery Settings
-BROKER_BACKEND = "djkombu.transport.DatabaseTransport"
+BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"
CELERY_ALWAYS_EAGER = True
import djcelery
djcelery.setup_loader()
-CSRF_COOKIE_NAME = 'askbot_scrf'
+CSRF_COOKIE_NAME = 'askbot_csrf'
CSRF_COOKIE_DOMAIN = ''#enter domain name here - e.g. example.com
diff --git a/askbot/setup_templates/settings.py.mustache b/askbot/setup_templates/settings.py.mustache
index ad954734..e177c649 100644
--- a/askbot/setup_templates/settings.py.mustache
+++ b/askbot/setup_templates/settings.py.mustache
@@ -101,6 +101,7 @@ 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',
@@ -175,6 +176,7 @@ CACHE_BACKEND = 'locmem://'
#needed for django-keyedcache
CACHE_TIMEOUT = 6000
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'
@@ -198,8 +200,10 @@ logging.basicConfig(
# ASKBOT_URL = 'forum/'
#
ASKBOT_URL = '' #no leading slash, default = '' empty string
+ASKBOT_TRANSLATE_URL = True #translate specific URLs
_ = lambda v:v #fake translation function for the login url
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/')
@@ -207,11 +211,12 @@ ALLOW_UNICODE_SLUGS = False
ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange
#Celery Settings
-BROKER_BACKEND = "djkombu.transport.DatabaseTransport"
+BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"
CELERY_ALWAYS_EAGER = True
import djcelery
djcelery.setup_loader()
+DOMAIN_NAME = '{{domain_name}}'
-CSRF_COOKIE_NAME = '{{domain_name}}_scrf'
-CSRF_COOKIE_DOMAIN = '{{domain_name}}'#enter domain name here - e.g. example.com
+CSRF_COOKIE_NAME = '{{domain_name}}_csrf'
+CSRF_COOKIE_DOMAIN = DOMAIN_NAME
diff --git a/askbot/skins/common/media/images/anon.png b/askbot/skins/common/media/images/anon.png
new file mode 100644
index 00000000..a2041590
--- /dev/null
+++ b/askbot/skins/common/media/images/anon.png
Binary files differ
diff --git a/askbot/skins/common/media/images/bigbutton.png b/askbot/skins/common/media/images/bigbutton.png
new file mode 100644
index 00000000..2a7c0f05
--- /dev/null
+++ b/askbot/skins/common/media/images/bigbutton.png
Binary files differ
diff --git a/askbot/skins/common/media/images/bigbuttonhover.png b/askbot/skins/common/media/images/bigbuttonhover.png
new file mode 100644
index 00000000..cf4bacca
--- /dev/null
+++ b/askbot/skins/common/media/images/bigbuttonhover.png
Binary files differ
diff --git a/askbot/skins/common/media/images/blue-up-arrow-h18px.png b/askbot/skins/common/media/images/blue-up-arrow-h18px.png
new file mode 100755
index 00000000..e1f29e86
--- /dev/null
+++ b/askbot/skins/common/media/images/blue-up-arrow-h18px.png
Binary files differ
diff --git a/askbot/skins/common/media/images/box-arrow.gif b/askbot/skins/common/media/images/box-arrow.gif
new file mode 100755
index 00000000..89dcf5b3
--- /dev/null
+++ b/askbot/skins/common/media/images/box-arrow.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/bullet_green.gif b/askbot/skins/common/media/images/bullet_green.gif
new file mode 100755
index 00000000..fa530910
--- /dev/null
+++ b/askbot/skins/common/media/images/bullet_green.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/cc-88x31.png b/askbot/skins/common/media/images/cc-88x31.png
new file mode 100755
index 00000000..0f2a0f10
--- /dev/null
+++ b/askbot/skins/common/media/images/cc-88x31.png
Binary files differ
diff --git a/askbot/skins/common/media/images/cc-by-sa.png b/askbot/skins/common/media/images/cc-by-sa.png
new file mode 100644
index 00000000..f0a944e0
--- /dev/null
+++ b/askbot/skins/common/media/images/cc-by-sa.png
Binary files differ
diff --git a/askbot/skins/common/media/images/close-small-dark.png b/askbot/skins/common/media/images/close-small-dark.png
new file mode 100755
index 00000000..280c1fc7
--- /dev/null
+++ b/askbot/skins/common/media/images/close-small-dark.png
Binary files differ
diff --git a/askbot/skins/common/media/images/close-small-hover.png b/askbot/skins/common/media/images/close-small-hover.png
new file mode 100755
index 00000000..7899aec7
--- /dev/null
+++ b/askbot/skins/common/media/images/close-small-hover.png
Binary files differ
diff --git a/askbot/skins/common/media/images/close-small.png b/askbot/skins/common/media/images/close-small.png
new file mode 100755
index 00000000..5a99d31f
--- /dev/null
+++ b/askbot/skins/common/media/images/close-small.png
Binary files differ
diff --git a/askbot/skins/common/media/images/contributorsback.png b/askbot/skins/common/media/images/contributorsback.png
new file mode 100644
index 00000000..dd728383
--- /dev/null
+++ b/askbot/skins/common/media/images/contributorsback.png
Binary files differ
diff --git a/askbot/skins/common/media/images/dash.gif b/askbot/skins/common/media/images/dash.gif
new file mode 100755
index 00000000..d1ddc507
--- /dev/null
+++ b/askbot/skins/common/media/images/dash.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/dialog-warning-off.png b/askbot/skins/common/media/images/dialog-warning-off.png
new file mode 100644
index 00000000..258e4d86
--- /dev/null
+++ b/askbot/skins/common/media/images/dialog-warning-off.png
Binary files differ
diff --git a/askbot/skins/common/media/images/dialog-warning.png b/askbot/skins/common/media/images/dialog-warning.png
new file mode 100644
index 00000000..a9e4ff39
--- /dev/null
+++ b/askbot/skins/common/media/images/dialog-warning.png
Binary files differ
diff --git a/askbot/skins/common/media/images/djangomade124x25_grey.gif b/askbot/skins/common/media/images/djangomade124x25_grey.gif
new file mode 100755
index 00000000..d34bb311
--- /dev/null
+++ b/askbot/skins/common/media/images/djangomade124x25_grey.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/dot-g.gif b/askbot/skins/common/media/images/dot-g.gif
new file mode 100755
index 00000000..5d6bb28e
--- /dev/null
+++ b/askbot/skins/common/media/images/dot-g.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/dot-list.gif b/askbot/skins/common/media/images/dot-list.gif
new file mode 100755
index 00000000..f6a6b865
--- /dev/null
+++ b/askbot/skins/common/media/images/dot-list.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/edit.png b/askbot/skins/common/media/images/edit.png
new file mode 100755
index 00000000..dcb09be0
--- /dev/null
+++ b/askbot/skins/common/media/images/edit.png
Binary files differ
diff --git a/askbot/skins/common/media/images/expander-arrow-hide.gif b/askbot/skins/common/media/images/expander-arrow-hide.gif
new file mode 100755
index 00000000..feb6a618
--- /dev/null
+++ b/askbot/skins/common/media/images/expander-arrow-hide.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/expander-arrow-show.gif b/askbot/skins/common/media/images/expander-arrow-show.gif
new file mode 100755
index 00000000..6825c56e
--- /dev/null
+++ b/askbot/skins/common/media/images/expander-arrow-show.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/favicon.gif b/askbot/skins/common/media/images/favicon.gif
new file mode 100644
index 00000000..f7f9061b
--- /dev/null
+++ b/askbot/skins/common/media/images/favicon.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/favicon.ico b/askbot/skins/common/media/images/favicon.ico
new file mode 100644
index 00000000..51a57bed
--- /dev/null
+++ b/askbot/skins/common/media/images/favicon.ico
Binary files differ
diff --git a/askbot/skins/common/media/images/feed-icon-small.png b/askbot/skins/common/media/images/feed-icon-small.png
new file mode 100644
index 00000000..2794b0f5
--- /dev/null
+++ b/askbot/skins/common/media/images/feed-icon-small.png
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ad.gif b/askbot/skins/common/media/images/flags/ad.gif
index 57b49973..57b49973 100755
--- a/askbot/skins/default/media/images/flags/ad.gif
+++ b/askbot/skins/common/media/images/flags/ad.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ae.gif b/askbot/skins/common/media/images/flags/ae.gif
index 78d15b67..78d15b67 100755
--- a/askbot/skins/default/media/images/flags/ae.gif
+++ b/askbot/skins/common/media/images/flags/ae.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/af.gif b/askbot/skins/common/media/images/flags/af.gif
index 98894082..98894082 100755
--- a/askbot/skins/default/media/images/flags/af.gif
+++ b/askbot/skins/common/media/images/flags/af.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ag.gif b/askbot/skins/common/media/images/flags/ag.gif
index 48f8e7bc..48f8e7bc 100755
--- a/askbot/skins/default/media/images/flags/ag.gif
+++ b/askbot/skins/common/media/images/flags/ag.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ai.gif b/askbot/skins/common/media/images/flags/ai.gif
index 1cbc5795..1cbc5795 100755
--- a/askbot/skins/default/media/images/flags/ai.gif
+++ b/askbot/skins/common/media/images/flags/ai.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/al.gif b/askbot/skins/common/media/images/flags/al.gif
index c44fe0a0..c44fe0a0 100755
--- a/askbot/skins/default/media/images/flags/al.gif
+++ b/askbot/skins/common/media/images/flags/al.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/am.gif b/askbot/skins/common/media/images/flags/am.gif
index 2915e30c..2915e30c 100755
--- a/askbot/skins/default/media/images/flags/am.gif
+++ b/askbot/skins/common/media/images/flags/am.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/an.gif b/askbot/skins/common/media/images/flags/an.gif
index cb570c67..cb570c67 100755
--- a/askbot/skins/default/media/images/flags/an.gif
+++ b/askbot/skins/common/media/images/flags/an.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ao.gif b/askbot/skins/common/media/images/flags/ao.gif
index 8c854fa1..8c854fa1 100644
--- a/askbot/skins/default/media/images/flags/ao.gif
+++ b/askbot/skins/common/media/images/flags/ao.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ar.gif b/askbot/skins/common/media/images/flags/ar.gif
index a9f71f7d..a9f71f7d 100755
--- a/askbot/skins/default/media/images/flags/ar.gif
+++ b/askbot/skins/common/media/images/flags/ar.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/as.gif b/askbot/skins/common/media/images/flags/as.gif
index d776ec27..d776ec27 100755
--- a/askbot/skins/default/media/images/flags/as.gif
+++ b/askbot/skins/common/media/images/flags/as.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/at.gif b/askbot/skins/common/media/images/flags/at.gif
index 87e12173..87e12173 100755
--- a/askbot/skins/default/media/images/flags/at.gif
+++ b/askbot/skins/common/media/images/flags/at.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/au.gif b/askbot/skins/common/media/images/flags/au.gif
index 5269c6a0..5269c6a0 100755
--- a/askbot/skins/default/media/images/flags/au.gif
+++ b/askbot/skins/common/media/images/flags/au.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/aw.gif b/askbot/skins/common/media/images/flags/aw.gif
index 27fdb4d1..27fdb4d1 100755
--- a/askbot/skins/default/media/images/flags/aw.gif
+++ b/askbot/skins/common/media/images/flags/aw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ax.gif b/askbot/skins/common/media/images/flags/ax.gif
index 0ceb6849..0ceb6849 100755
--- a/askbot/skins/default/media/images/flags/ax.gif
+++ b/askbot/skins/common/media/images/flags/ax.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/az.gif b/askbot/skins/common/media/images/flags/az.gif
index d7716184..d7716184 100755
--- a/askbot/skins/default/media/images/flags/az.gif
+++ b/askbot/skins/common/media/images/flags/az.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ba.gif b/askbot/skins/common/media/images/flags/ba.gif
index 9bf5f0ac..9bf5f0ac 100755
--- a/askbot/skins/default/media/images/flags/ba.gif
+++ b/askbot/skins/common/media/images/flags/ba.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bb.gif b/askbot/skins/common/media/images/flags/bb.gif
index b7d08e57..b7d08e57 100755
--- a/askbot/skins/default/media/images/flags/bb.gif
+++ b/askbot/skins/common/media/images/flags/bb.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bd.gif b/askbot/skins/common/media/images/flags/bd.gif
index 0fd27eca..0fd27eca 100755
--- a/askbot/skins/default/media/images/flags/bd.gif
+++ b/askbot/skins/common/media/images/flags/bd.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/be.gif b/askbot/skins/common/media/images/flags/be.gif
index ae09bfbe..ae09bfbe 100755
--- a/askbot/skins/default/media/images/flags/be.gif
+++ b/askbot/skins/common/media/images/flags/be.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bf.gif b/askbot/skins/common/media/images/flags/bf.gif
index 9d6772cd..9d6772cd 100755
--- a/askbot/skins/default/media/images/flags/bf.gif
+++ b/askbot/skins/common/media/images/flags/bf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bg.gif b/askbot/skins/common/media/images/flags/bg.gif
index 11cf8ff3..11cf8ff3 100755
--- a/askbot/skins/default/media/images/flags/bg.gif
+++ b/askbot/skins/common/media/images/flags/bg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bh.gif b/askbot/skins/common/media/images/flags/bh.gif
index 56aa72b2..56aa72b2 100755
--- a/askbot/skins/default/media/images/flags/bh.gif
+++ b/askbot/skins/common/media/images/flags/bh.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bi.gif b/askbot/skins/common/media/images/flags/bi.gif
index 6e2cbe12..6e2cbe12 100755
--- a/askbot/skins/default/media/images/flags/bi.gif
+++ b/askbot/skins/common/media/images/flags/bi.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bj.gif b/askbot/skins/common/media/images/flags/bj.gif
index e676116f..e676116f 100755
--- a/askbot/skins/default/media/images/flags/bj.gif
+++ b/askbot/skins/common/media/images/flags/bj.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bm.gif b/askbot/skins/common/media/images/flags/bm.gif
index 9feb87bc..9feb87bc 100755
--- a/askbot/skins/default/media/images/flags/bm.gif
+++ b/askbot/skins/common/media/images/flags/bm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bn.gif b/askbot/skins/common/media/images/flags/bn.gif
index b7b6b0f9..b7b6b0f9 100755
--- a/askbot/skins/default/media/images/flags/bn.gif
+++ b/askbot/skins/common/media/images/flags/bn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bo.gif b/askbot/skins/common/media/images/flags/bo.gif
index 4844f856..4844f856 100755
--- a/askbot/skins/default/media/images/flags/bo.gif
+++ b/askbot/skins/common/media/images/flags/bo.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/br.gif b/askbot/skins/common/media/images/flags/br.gif
index 8c866162..8c866162 100755
--- a/askbot/skins/default/media/images/flags/br.gif
+++ b/askbot/skins/common/media/images/flags/br.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bs.gif b/askbot/skins/common/media/images/flags/bs.gif
index c0a741e5..c0a741e5 100755
--- a/askbot/skins/default/media/images/flags/bs.gif
+++ b/askbot/skins/common/media/images/flags/bs.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bt.gif b/askbot/skins/common/media/images/flags/bt.gif
index abe2f3cc..abe2f3cc 100755
--- a/askbot/skins/default/media/images/flags/bt.gif
+++ b/askbot/skins/common/media/images/flags/bt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bv.gif b/askbot/skins/common/media/images/flags/bv.gif
index 6202d1f3..6202d1f3 100755
--- a/askbot/skins/default/media/images/flags/bv.gif
+++ b/askbot/skins/common/media/images/flags/bv.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bw.gif b/askbot/skins/common/media/images/flags/bw.gif
index 986ab63c..986ab63c 100755
--- a/askbot/skins/default/media/images/flags/bw.gif
+++ b/askbot/skins/common/media/images/flags/bw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/by.gif b/askbot/skins/common/media/images/flags/by.gif
index 43ffcd4c..43ffcd4c 100755
--- a/askbot/skins/default/media/images/flags/by.gif
+++ b/askbot/skins/common/media/images/flags/by.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/bz.gif b/askbot/skins/common/media/images/flags/bz.gif
index 791737f0..791737f0 100755
--- a/askbot/skins/default/media/images/flags/bz.gif
+++ b/askbot/skins/common/media/images/flags/bz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ca.gif b/askbot/skins/common/media/images/flags/ca.gif
index 457d9662..457d9662 100755
--- a/askbot/skins/default/media/images/flags/ca.gif
+++ b/askbot/skins/common/media/images/flags/ca.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/catalonia.gif b/askbot/skins/common/media/images/flags/catalonia.gif
index 73df9a04..73df9a04 100644
--- a/askbot/skins/default/media/images/flags/catalonia.gif
+++ b/askbot/skins/common/media/images/flags/catalonia.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cc.gif b/askbot/skins/common/media/images/flags/cc.gif
index 3f783270..3f783270 100755
--- a/askbot/skins/default/media/images/flags/cc.gif
+++ b/askbot/skins/common/media/images/flags/cc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cd.gif b/askbot/skins/common/media/images/flags/cd.gif
index 1df717ae..1df717ae 100644
--- a/askbot/skins/default/media/images/flags/cd.gif
+++ b/askbot/skins/common/media/images/flags/cd.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cf.gif b/askbot/skins/common/media/images/flags/cf.gif
index 35787ca4..35787ca4 100755
--- a/askbot/skins/default/media/images/flags/cf.gif
+++ b/askbot/skins/common/media/images/flags/cf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cg.gif b/askbot/skins/common/media/images/flags/cg.gif
index e0a62a51..e0a62a51 100755
--- a/askbot/skins/default/media/images/flags/cg.gif
+++ b/askbot/skins/common/media/images/flags/cg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ch.gif b/askbot/skins/common/media/images/flags/ch.gif
index d5c0e5b7..d5c0e5b7 100755
--- a/askbot/skins/default/media/images/flags/ch.gif
+++ b/askbot/skins/common/media/images/flags/ch.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ci.gif b/askbot/skins/common/media/images/flags/ci.gif
index 844120a5..844120a5 100755
--- a/askbot/skins/default/media/images/flags/ci.gif
+++ b/askbot/skins/common/media/images/flags/ci.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ck.gif b/askbot/skins/common/media/images/flags/ck.gif
index 2edb7399..2edb7399 100755
--- a/askbot/skins/default/media/images/flags/ck.gif
+++ b/askbot/skins/common/media/images/flags/ck.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cl.gif b/askbot/skins/common/media/images/flags/cl.gif
index cbc370e6..cbc370e6 100755
--- a/askbot/skins/default/media/images/flags/cl.gif
+++ b/askbot/skins/common/media/images/flags/cl.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cm.gif b/askbot/skins/common/media/images/flags/cm.gif
index 1fb102b2..1fb102b2 100755
--- a/askbot/skins/default/media/images/flags/cm.gif
+++ b/askbot/skins/common/media/images/flags/cm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cn.gif b/askbot/skins/common/media/images/flags/cn.gif
index b0525309..b0525309 100755
--- a/askbot/skins/default/media/images/flags/cn.gif
+++ b/askbot/skins/common/media/images/flags/cn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/co.gif b/askbot/skins/common/media/images/flags/co.gif
index d0e15caf..d0e15caf 100755
--- a/askbot/skins/default/media/images/flags/co.gif
+++ b/askbot/skins/common/media/images/flags/co.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cr.gif b/askbot/skins/common/media/images/flags/cr.gif
index 0728dd6a..0728dd6a 100755
--- a/askbot/skins/default/media/images/flags/cr.gif
+++ b/askbot/skins/common/media/images/flags/cr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cs.gif b/askbot/skins/common/media/images/flags/cs.gif
index 101db649..101db649 100755
--- a/askbot/skins/default/media/images/flags/cs.gif
+++ b/askbot/skins/common/media/images/flags/cs.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cu.gif b/askbot/skins/common/media/images/flags/cu.gif
index 291255ca..291255ca 100755
--- a/askbot/skins/default/media/images/flags/cu.gif
+++ b/askbot/skins/common/media/images/flags/cu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cv.gif b/askbot/skins/common/media/images/flags/cv.gif
index 43c6c6cb..43c6c6cb 100755
--- a/askbot/skins/default/media/images/flags/cv.gif
+++ b/askbot/skins/common/media/images/flags/cv.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cx.gif b/askbot/skins/common/media/images/flags/cx.gif
index a5b43089..a5b43089 100755
--- a/askbot/skins/default/media/images/flags/cx.gif
+++ b/askbot/skins/common/media/images/flags/cx.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cy.gif b/askbot/skins/common/media/images/flags/cy.gif
index 35c661e1..35c661e1 100755
--- a/askbot/skins/default/media/images/flags/cy.gif
+++ b/askbot/skins/common/media/images/flags/cy.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/cz.gif b/askbot/skins/common/media/images/flags/cz.gif
index 0a605e58..0a605e58 100755
--- a/askbot/skins/default/media/images/flags/cz.gif
+++ b/askbot/skins/common/media/images/flags/cz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/de.gif b/askbot/skins/common/media/images/flags/de.gif
index 75728ddf..75728ddf 100755
--- a/askbot/skins/default/media/images/flags/de.gif
+++ b/askbot/skins/common/media/images/flags/de.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/dj.gif b/askbot/skins/common/media/images/flags/dj.gif
index 212406d9..212406d9 100755
--- a/askbot/skins/default/media/images/flags/dj.gif
+++ b/askbot/skins/common/media/images/flags/dj.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/dk.gif b/askbot/skins/common/media/images/flags/dk.gif
index 03e75bd2..03e75bd2 100755
--- a/askbot/skins/default/media/images/flags/dk.gif
+++ b/askbot/skins/common/media/images/flags/dk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/dm.gif b/askbot/skins/common/media/images/flags/dm.gif
index 2f87f3ca..2f87f3ca 100755
--- a/askbot/skins/default/media/images/flags/dm.gif
+++ b/askbot/skins/common/media/images/flags/dm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/do.gif b/askbot/skins/common/media/images/flags/do.gif
index f7d0bad3..f7d0bad3 100755
--- a/askbot/skins/default/media/images/flags/do.gif
+++ b/askbot/skins/common/media/images/flags/do.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/dz.gif b/askbot/skins/common/media/images/flags/dz.gif
index ed580a7c..ed580a7c 100755
--- a/askbot/skins/default/media/images/flags/dz.gif
+++ b/askbot/skins/common/media/images/flags/dz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ec.gif b/askbot/skins/common/media/images/flags/ec.gif
index 9e41e0ec..9e41e0ec 100755
--- a/askbot/skins/default/media/images/flags/ec.gif
+++ b/askbot/skins/common/media/images/flags/ec.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ee.gif b/askbot/skins/common/media/images/flags/ee.gif
index 9397a2d0..9397a2d0 100755
--- a/askbot/skins/default/media/images/flags/ee.gif
+++ b/askbot/skins/common/media/images/flags/ee.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/eg.gif b/askbot/skins/common/media/images/flags/eg.gif
index 6857c7dd..6857c7dd 100755
--- a/askbot/skins/default/media/images/flags/eg.gif
+++ b/askbot/skins/common/media/images/flags/eg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/eh.gif b/askbot/skins/common/media/images/flags/eh.gif
index dd0391c2..dd0391c2 100755
--- a/askbot/skins/default/media/images/flags/eh.gif
+++ b/askbot/skins/common/media/images/flags/eh.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/england.gif b/askbot/skins/common/media/images/flags/england.gif
index 933a4f0b..933a4f0b 100755
--- a/askbot/skins/default/media/images/flags/england.gif
+++ b/askbot/skins/common/media/images/flags/england.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/er.gif b/askbot/skins/common/media/images/flags/er.gif
index 3d4d612c..3d4d612c 100755
--- a/askbot/skins/default/media/images/flags/er.gif
+++ b/askbot/skins/common/media/images/flags/er.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/es.gif b/askbot/skins/common/media/images/flags/es.gif
index c27d65e5..c27d65e5 100755
--- a/askbot/skins/default/media/images/flags/es.gif
+++ b/askbot/skins/common/media/images/flags/es.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/et.gif b/askbot/skins/common/media/images/flags/et.gif
index f77995d0..f77995d0 100755
--- a/askbot/skins/default/media/images/flags/et.gif
+++ b/askbot/skins/common/media/images/flags/et.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/europeanunion.gif b/askbot/skins/common/media/images/flags/europeanunion.gif
index 28a762a5..28a762a5 100644
--- a/askbot/skins/default/media/images/flags/europeanunion.gif
+++ b/askbot/skins/common/media/images/flags/europeanunion.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fam.gif b/askbot/skins/common/media/images/flags/fam.gif
index 7d528852..7d528852 100755
--- a/askbot/skins/default/media/images/flags/fam.gif
+++ b/askbot/skins/common/media/images/flags/fam.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fi.gif b/askbot/skins/common/media/images/flags/fi.gif
index 8d3a1918..8d3a1918 100755
--- a/askbot/skins/default/media/images/flags/fi.gif
+++ b/askbot/skins/common/media/images/flags/fi.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fj.gif b/askbot/skins/common/media/images/flags/fj.gif
index 486151cb..486151cb 100755
--- a/askbot/skins/default/media/images/flags/fj.gif
+++ b/askbot/skins/common/media/images/flags/fj.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fk.gif b/askbot/skins/common/media/images/flags/fk.gif
index 37b5ecf3..37b5ecf3 100755
--- a/askbot/skins/default/media/images/flags/fk.gif
+++ b/askbot/skins/common/media/images/flags/fk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fm.gif b/askbot/skins/common/media/images/flags/fm.gif
index 7f8723b7..7f8723b7 100755
--- a/askbot/skins/default/media/images/flags/fm.gif
+++ b/askbot/skins/common/media/images/flags/fm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fo.gif b/askbot/skins/common/media/images/flags/fo.gif
index 4a90fc04..4a90fc04 100755
--- a/askbot/skins/default/media/images/flags/fo.gif
+++ b/askbot/skins/common/media/images/flags/fo.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/fr.gif b/askbot/skins/common/media/images/flags/fr.gif
index 43d0b801..43d0b801 100755
--- a/askbot/skins/default/media/images/flags/fr.gif
+++ b/askbot/skins/common/media/images/flags/fr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ga.gif b/askbot/skins/common/media/images/flags/ga.gif
index 23fd5f0d..23fd5f0d 100755
--- a/askbot/skins/default/media/images/flags/ga.gif
+++ b/askbot/skins/common/media/images/flags/ga.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gb.gif b/askbot/skins/common/media/images/flags/gb.gif
index 3c6bce15..3c6bce15 100644
--- a/askbot/skins/default/media/images/flags/gb.gif
+++ b/askbot/skins/common/media/images/flags/gb.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gd.gif b/askbot/skins/common/media/images/flags/gd.gif
index 25ea3123..25ea3123 100755
--- a/askbot/skins/default/media/images/flags/gd.gif
+++ b/askbot/skins/common/media/images/flags/gd.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ge.gif b/askbot/skins/common/media/images/flags/ge.gif
index faa7f126..faa7f126 100755
--- a/askbot/skins/default/media/images/flags/ge.gif
+++ b/askbot/skins/common/media/images/flags/ge.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gf.gif b/askbot/skins/common/media/images/flags/gf.gif
index 43d0b801..43d0b801 100755
--- a/askbot/skins/default/media/images/flags/gf.gif
+++ b/askbot/skins/common/media/images/flags/gf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gh.gif b/askbot/skins/common/media/images/flags/gh.gif
index 273fb7d1..273fb7d1 100755
--- a/askbot/skins/default/media/images/flags/gh.gif
+++ b/askbot/skins/common/media/images/flags/gh.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gi.gif b/askbot/skins/common/media/images/flags/gi.gif
index 7b1984bc..7b1984bc 100755
--- a/askbot/skins/default/media/images/flags/gi.gif
+++ b/askbot/skins/common/media/images/flags/gi.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gl.gif b/askbot/skins/common/media/images/flags/gl.gif
index ef445be0..ef445be0 100755
--- a/askbot/skins/default/media/images/flags/gl.gif
+++ b/askbot/skins/common/media/images/flags/gl.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gm.gif b/askbot/skins/common/media/images/flags/gm.gif
index 6847c5a8..6847c5a8 100755
--- a/askbot/skins/default/media/images/flags/gm.gif
+++ b/askbot/skins/common/media/images/flags/gm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gn.gif b/askbot/skins/common/media/images/flags/gn.gif
index a982ac6f..a982ac6f 100755
--- a/askbot/skins/default/media/images/flags/gn.gif
+++ b/askbot/skins/common/media/images/flags/gn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gp.gif b/askbot/skins/common/media/images/flags/gp.gif
index 31166db6..31166db6 100755
--- a/askbot/skins/default/media/images/flags/gp.gif
+++ b/askbot/skins/common/media/images/flags/gp.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gq.gif b/askbot/skins/common/media/images/flags/gq.gif
index 8b4e0cc4..8b4e0cc4 100755
--- a/askbot/skins/default/media/images/flags/gq.gif
+++ b/askbot/skins/common/media/images/flags/gq.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gr.gif b/askbot/skins/common/media/images/flags/gr.gif
index b4c8c04e..b4c8c04e 100755
--- a/askbot/skins/default/media/images/flags/gr.gif
+++ b/askbot/skins/common/media/images/flags/gr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gs.gif b/askbot/skins/common/media/images/flags/gs.gif
index ccc96ec0..ccc96ec0 100755
--- a/askbot/skins/default/media/images/flags/gs.gif
+++ b/askbot/skins/common/media/images/flags/gs.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gt.gif b/askbot/skins/common/media/images/flags/gt.gif
index 7e94d1dd..7e94d1dd 100755
--- a/askbot/skins/default/media/images/flags/gt.gif
+++ b/askbot/skins/common/media/images/flags/gt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gu.gif b/askbot/skins/common/media/images/flags/gu.gif
index eafef683..eafef683 100755
--- a/askbot/skins/default/media/images/flags/gu.gif
+++ b/askbot/skins/common/media/images/flags/gu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gw.gif b/askbot/skins/common/media/images/flags/gw.gif
index 55f75711..55f75711 100755
--- a/askbot/skins/default/media/images/flags/gw.gif
+++ b/askbot/skins/common/media/images/flags/gw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/gy.gif b/askbot/skins/common/media/images/flags/gy.gif
index 1cb4cd71..1cb4cd71 100755
--- a/askbot/skins/default/media/images/flags/gy.gif
+++ b/askbot/skins/common/media/images/flags/gy.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/hk.gif b/askbot/skins/common/media/images/flags/hk.gif
index 798af96d..798af96d 100755
--- a/askbot/skins/default/media/images/flags/hk.gif
+++ b/askbot/skins/common/media/images/flags/hk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/hm.gif b/askbot/skins/common/media/images/flags/hm.gif
index 5269c6a0..5269c6a0 100755
--- a/askbot/skins/default/media/images/flags/hm.gif
+++ b/askbot/skins/common/media/images/flags/hm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/hn.gif b/askbot/skins/common/media/images/flags/hn.gif
index 6c4ffe8e..6c4ffe8e 100755
--- a/askbot/skins/default/media/images/flags/hn.gif
+++ b/askbot/skins/common/media/images/flags/hn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/hr.gif b/askbot/skins/common/media/images/flags/hr.gif
index 557c6602..557c6602 100755
--- a/askbot/skins/default/media/images/flags/hr.gif
+++ b/askbot/skins/common/media/images/flags/hr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ht.gif b/askbot/skins/common/media/images/flags/ht.gif
index 059604ab..059604ab 100755
--- a/askbot/skins/default/media/images/flags/ht.gif
+++ b/askbot/skins/common/media/images/flags/ht.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/hu.gif b/askbot/skins/common/media/images/flags/hu.gif
index 6142d868..6142d868 100755
--- a/askbot/skins/default/media/images/flags/hu.gif
+++ b/askbot/skins/common/media/images/flags/hu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/id.gif b/askbot/skins/common/media/images/flags/id.gif
index 865161b0..865161b0 100755
--- a/askbot/skins/default/media/images/flags/id.gif
+++ b/askbot/skins/common/media/images/flags/id.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ie.gif b/askbot/skins/common/media/images/flags/ie.gif
index 506ad285..506ad285 100755
--- a/askbot/skins/default/media/images/flags/ie.gif
+++ b/askbot/skins/common/media/images/flags/ie.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/il.gif b/askbot/skins/common/media/images/flags/il.gif
index c8483ae5..c8483ae5 100755
--- a/askbot/skins/default/media/images/flags/il.gif
+++ b/askbot/skins/common/media/images/flags/il.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/in.gif b/askbot/skins/common/media/images/flags/in.gif
index 1cd80272..1cd80272 100755
--- a/askbot/skins/default/media/images/flags/in.gif
+++ b/askbot/skins/common/media/images/flags/in.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/io.gif b/askbot/skins/common/media/images/flags/io.gif
index de7e7ab3..de7e7ab3 100755
--- a/askbot/skins/default/media/images/flags/io.gif
+++ b/askbot/skins/common/media/images/flags/io.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/iq.gif b/askbot/skins/common/media/images/flags/iq.gif
index c34fe3c4..c34fe3c4 100755
--- a/askbot/skins/default/media/images/flags/iq.gif
+++ b/askbot/skins/common/media/images/flags/iq.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ir.gif b/askbot/skins/common/media/images/flags/ir.gif
index 156040fc..156040fc 100755
--- a/askbot/skins/default/media/images/flags/ir.gif
+++ b/askbot/skins/common/media/images/flags/ir.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/is.gif b/askbot/skins/common/media/images/flags/is.gif
index b42502de..b42502de 100755
--- a/askbot/skins/default/media/images/flags/is.gif
+++ b/askbot/skins/common/media/images/flags/is.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/it.gif b/askbot/skins/common/media/images/flags/it.gif
index d79e90e9..d79e90e9 100755
--- a/askbot/skins/default/media/images/flags/it.gif
+++ b/askbot/skins/common/media/images/flags/it.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/jm.gif b/askbot/skins/common/media/images/flags/jm.gif
index 0bed67c2..0bed67c2 100755
--- a/askbot/skins/default/media/images/flags/jm.gif
+++ b/askbot/skins/common/media/images/flags/jm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/jo.gif b/askbot/skins/common/media/images/flags/jo.gif
index 03daf8af..03daf8af 100755
--- a/askbot/skins/default/media/images/flags/jo.gif
+++ b/askbot/skins/common/media/images/flags/jo.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/jp.gif b/askbot/skins/common/media/images/flags/jp.gif
index 444c1d05..444c1d05 100755
--- a/askbot/skins/default/media/images/flags/jp.gif
+++ b/askbot/skins/common/media/images/flags/jp.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ke.gif b/askbot/skins/common/media/images/flags/ke.gif
index c2b5d45c..c2b5d45c 100755
--- a/askbot/skins/default/media/images/flags/ke.gif
+++ b/askbot/skins/common/media/images/flags/ke.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kg.gif b/askbot/skins/common/media/images/flags/kg.gif
index 72a4d412..72a4d412 100755
--- a/askbot/skins/default/media/images/flags/kg.gif
+++ b/askbot/skins/common/media/images/flags/kg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kh.gif b/askbot/skins/common/media/images/flags/kh.gif
index 30a18315..30a18315 100755
--- a/askbot/skins/default/media/images/flags/kh.gif
+++ b/askbot/skins/common/media/images/flags/kh.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ki.gif b/askbot/skins/common/media/images/flags/ki.gif
index 4a0751a2..4a0751a2 100755
--- a/askbot/skins/default/media/images/flags/ki.gif
+++ b/askbot/skins/common/media/images/flags/ki.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/km.gif b/askbot/skins/common/media/images/flags/km.gif
index 5859595e..5859595e 100755
--- a/askbot/skins/default/media/images/flags/km.gif
+++ b/askbot/skins/common/media/images/flags/km.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kn.gif b/askbot/skins/common/media/images/flags/kn.gif
index bb9cc34a..bb9cc34a 100755
--- a/askbot/skins/default/media/images/flags/kn.gif
+++ b/askbot/skins/common/media/images/flags/kn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kp.gif b/askbot/skins/common/media/images/flags/kp.gif
index 6e0ca09e..6e0ca09e 100755
--- a/askbot/skins/default/media/images/flags/kp.gif
+++ b/askbot/skins/common/media/images/flags/kp.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kr.gif b/askbot/skins/common/media/images/flags/kr.gif
index 1cddbe75..1cddbe75 100755
--- a/askbot/skins/default/media/images/flags/kr.gif
+++ b/askbot/skins/common/media/images/flags/kr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kw.gif b/askbot/skins/common/media/images/flags/kw.gif
index 1efc7347..1efc7347 100755
--- a/askbot/skins/default/media/images/flags/kw.gif
+++ b/askbot/skins/common/media/images/flags/kw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ky.gif b/askbot/skins/common/media/images/flags/ky.gif
index d3d02ee4..d3d02ee4 100755
--- a/askbot/skins/default/media/images/flags/ky.gif
+++ b/askbot/skins/common/media/images/flags/ky.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/kz.gif b/askbot/skins/common/media/images/flags/kz.gif
index 24baebe0..24baebe0 100755
--- a/askbot/skins/default/media/images/flags/kz.gif
+++ b/askbot/skins/common/media/images/flags/kz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/la.gif b/askbot/skins/common/media/images/flags/la.gif
index d14cf4d8..d14cf4d8 100755
--- a/askbot/skins/default/media/images/flags/la.gif
+++ b/askbot/skins/common/media/images/flags/la.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lb.gif b/askbot/skins/common/media/images/flags/lb.gif
index 003d83af..003d83af 100755
--- a/askbot/skins/default/media/images/flags/lb.gif
+++ b/askbot/skins/common/media/images/flags/lb.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lc.gif b/askbot/skins/common/media/images/flags/lc.gif
index f5fe5bff..f5fe5bff 100644
--- a/askbot/skins/default/media/images/flags/lc.gif
+++ b/askbot/skins/common/media/images/flags/lc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/li.gif b/askbot/skins/common/media/images/flags/li.gif
index 713c58e1..713c58e1 100755
--- a/askbot/skins/default/media/images/flags/li.gif
+++ b/askbot/skins/common/media/images/flags/li.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lk.gif b/askbot/skins/common/media/images/flags/lk.gif
index 1b3ee7f5..1b3ee7f5 100755
--- a/askbot/skins/default/media/images/flags/lk.gif
+++ b/askbot/skins/common/media/images/flags/lk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lr.gif b/askbot/skins/common/media/images/flags/lr.gif
index 435af9e5..435af9e5 100755
--- a/askbot/skins/default/media/images/flags/lr.gif
+++ b/askbot/skins/common/media/images/flags/lr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ls.gif b/askbot/skins/common/media/images/flags/ls.gif
index 427ae957..427ae957 100755
--- a/askbot/skins/default/media/images/flags/ls.gif
+++ b/askbot/skins/common/media/images/flags/ls.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lt.gif b/askbot/skins/common/media/images/flags/lt.gif
index dee9c601..dee9c601 100755
--- a/askbot/skins/default/media/images/flags/lt.gif
+++ b/askbot/skins/common/media/images/flags/lt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lu.gif b/askbot/skins/common/media/images/flags/lu.gif
index 7d7293ed..7d7293ed 100755
--- a/askbot/skins/default/media/images/flags/lu.gif
+++ b/askbot/skins/common/media/images/flags/lu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/lv.gif b/askbot/skins/common/media/images/flags/lv.gif
index 17e71b7e..17e71b7e 100755
--- a/askbot/skins/default/media/images/flags/lv.gif
+++ b/askbot/skins/common/media/images/flags/lv.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ly.gif b/askbot/skins/common/media/images/flags/ly.gif
index a654c30a..a654c30a 100755
--- a/askbot/skins/default/media/images/flags/ly.gif
+++ b/askbot/skins/common/media/images/flags/ly.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ma.gif b/askbot/skins/common/media/images/flags/ma.gif
index fc784119..fc784119 100755
--- a/askbot/skins/default/media/images/flags/ma.gif
+++ b/askbot/skins/common/media/images/flags/ma.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mc.gif b/askbot/skins/common/media/images/flags/mc.gif
index 02a7c8e1..02a7c8e1 100755
--- a/askbot/skins/default/media/images/flags/mc.gif
+++ b/askbot/skins/common/media/images/flags/mc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/md.gif b/askbot/skins/common/media/images/flags/md.gif
index e4b8a7e3..e4b8a7e3 100755
--- a/askbot/skins/default/media/images/flags/md.gif
+++ b/askbot/skins/common/media/images/flags/md.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/me.gif b/askbot/skins/common/media/images/flags/me.gif
index a260453c..a260453c 100644
--- a/askbot/skins/default/media/images/flags/me.gif
+++ b/askbot/skins/common/media/images/flags/me.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mg.gif b/askbot/skins/common/media/images/flags/mg.gif
index a91b577d..a91b577d 100755
--- a/askbot/skins/default/media/images/flags/mg.gif
+++ b/askbot/skins/common/media/images/flags/mg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mh.gif b/askbot/skins/common/media/images/flags/mh.gif
index 92f5f485..92f5f485 100755
--- a/askbot/skins/default/media/images/flags/mh.gif
+++ b/askbot/skins/common/media/images/flags/mh.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mk.gif b/askbot/skins/common/media/images/flags/mk.gif
index 7aeb8311..7aeb8311 100755
--- a/askbot/skins/default/media/images/flags/mk.gif
+++ b/askbot/skins/common/media/images/flags/mk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ml.gif b/askbot/skins/common/media/images/flags/ml.gif
index 53d6f490..53d6f490 100755
--- a/askbot/skins/default/media/images/flags/ml.gif
+++ b/askbot/skins/common/media/images/flags/ml.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mm.gif b/askbot/skins/common/media/images/flags/mm.gif
index 9e0a2756..9e0a2756 100755
--- a/askbot/skins/default/media/images/flags/mm.gif
+++ b/askbot/skins/common/media/images/flags/mm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mn.gif b/askbot/skins/common/media/images/flags/mn.gif
index dff8ea5a..dff8ea5a 100755
--- a/askbot/skins/default/media/images/flags/mn.gif
+++ b/askbot/skins/common/media/images/flags/mn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mo.gif b/askbot/skins/common/media/images/flags/mo.gif
index 66cf5b4f..66cf5b4f 100755
--- a/askbot/skins/default/media/images/flags/mo.gif
+++ b/askbot/skins/common/media/images/flags/mo.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mp.gif b/askbot/skins/common/media/images/flags/mp.gif
index 73b7147e..73b7147e 100755
--- a/askbot/skins/default/media/images/flags/mp.gif
+++ b/askbot/skins/common/media/images/flags/mp.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mq.gif b/askbot/skins/common/media/images/flags/mq.gif
index 570bc5dd..570bc5dd 100755
--- a/askbot/skins/default/media/images/flags/mq.gif
+++ b/askbot/skins/common/media/images/flags/mq.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mr.gif b/askbot/skins/common/media/images/flags/mr.gif
index f52fcf09..f52fcf09 100755
--- a/askbot/skins/default/media/images/flags/mr.gif
+++ b/askbot/skins/common/media/images/flags/mr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ms.gif b/askbot/skins/common/media/images/flags/ms.gif
index 5e5a67aa..5e5a67aa 100755
--- a/askbot/skins/default/media/images/flags/ms.gif
+++ b/askbot/skins/common/media/images/flags/ms.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mt.gif b/askbot/skins/common/media/images/flags/mt.gif
index 45c709f2..45c709f2 100755
--- a/askbot/skins/default/media/images/flags/mt.gif
+++ b/askbot/skins/common/media/images/flags/mt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mu.gif b/askbot/skins/common/media/images/flags/mu.gif
index 081ab453..081ab453 100755
--- a/askbot/skins/default/media/images/flags/mu.gif
+++ b/askbot/skins/common/media/images/flags/mu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mv.gif b/askbot/skins/common/media/images/flags/mv.gif
index 46b63875..46b63875 100755
--- a/askbot/skins/default/media/images/flags/mv.gif
+++ b/askbot/skins/common/media/images/flags/mv.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mw.gif b/askbot/skins/common/media/images/flags/mw.gif
index ad045a09..ad045a09 100755
--- a/askbot/skins/default/media/images/flags/mw.gif
+++ b/askbot/skins/common/media/images/flags/mw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mx.gif b/askbot/skins/common/media/images/flags/mx.gif
index ddc75d04..ddc75d04 100755
--- a/askbot/skins/default/media/images/flags/mx.gif
+++ b/askbot/skins/common/media/images/flags/mx.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/my.gif b/askbot/skins/common/media/images/flags/my.gif
index fc7d5236..fc7d5236 100755
--- a/askbot/skins/default/media/images/flags/my.gif
+++ b/askbot/skins/common/media/images/flags/my.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/mz.gif b/askbot/skins/common/media/images/flags/mz.gif
index 7d635082..7d635082 100755
--- a/askbot/skins/default/media/images/flags/mz.gif
+++ b/askbot/skins/common/media/images/flags/mz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/na.gif b/askbot/skins/common/media/images/flags/na.gif
index c0babe72..c0babe72 100755
--- a/askbot/skins/default/media/images/flags/na.gif
+++ b/askbot/skins/common/media/images/flags/na.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/nc.gif b/askbot/skins/common/media/images/flags/nc.gif
index b1e91b9a..b1e91b9a 100755
--- a/askbot/skins/default/media/images/flags/nc.gif
+++ b/askbot/skins/common/media/images/flags/nc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ne.gif b/askbot/skins/common/media/images/flags/ne.gif
index ff4eaf07..ff4eaf07 100755
--- a/askbot/skins/default/media/images/flags/ne.gif
+++ b/askbot/skins/common/media/images/flags/ne.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/nf.gif b/askbot/skins/common/media/images/flags/nf.gif
index c83424c2..c83424c2 100755
--- a/askbot/skins/default/media/images/flags/nf.gif
+++ b/askbot/skins/common/media/images/flags/nf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ng.gif b/askbot/skins/common/media/images/flags/ng.gif
index bdde7cb3..bdde7cb3 100755
--- a/askbot/skins/default/media/images/flags/ng.gif
+++ b/askbot/skins/common/media/images/flags/ng.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ni.gif b/askbot/skins/common/media/images/flags/ni.gif
index d05894d0..d05894d0 100755
--- a/askbot/skins/default/media/images/flags/ni.gif
+++ b/askbot/skins/common/media/images/flags/ni.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/nl.gif b/askbot/skins/common/media/images/flags/nl.gif
index c1c8f46d..c1c8f46d 100755
--- a/askbot/skins/default/media/images/flags/nl.gif
+++ b/askbot/skins/common/media/images/flags/nl.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/no.gif b/askbot/skins/common/media/images/flags/no.gif
index 6202d1f3..6202d1f3 100755
--- a/askbot/skins/default/media/images/flags/no.gif
+++ b/askbot/skins/common/media/images/flags/no.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/np.gif b/askbot/skins/common/media/images/flags/np.gif
index 1096893a..1096893a 100755
--- a/askbot/skins/default/media/images/flags/np.gif
+++ b/askbot/skins/common/media/images/flags/np.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/nr.gif b/askbot/skins/common/media/images/flags/nr.gif
index 2e4c0c5c..2e4c0c5c 100755
--- a/askbot/skins/default/media/images/flags/nr.gif
+++ b/askbot/skins/common/media/images/flags/nr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/nu.gif b/askbot/skins/common/media/images/flags/nu.gif
index 618210a7..618210a7 100755
--- a/askbot/skins/default/media/images/flags/nu.gif
+++ b/askbot/skins/common/media/images/flags/nu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/nz.gif b/askbot/skins/common/media/images/flags/nz.gif
index 028a5dc6..028a5dc6 100755
--- a/askbot/skins/default/media/images/flags/nz.gif
+++ b/askbot/skins/common/media/images/flags/nz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/om.gif b/askbot/skins/common/media/images/flags/om.gif
index 2b8c7750..2b8c7750 100755
--- a/askbot/skins/default/media/images/flags/om.gif
+++ b/askbot/skins/common/media/images/flags/om.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pa.gif b/askbot/skins/common/media/images/flags/pa.gif
index d518b2f9..d518b2f9 100755
--- a/askbot/skins/default/media/images/flags/pa.gif
+++ b/askbot/skins/common/media/images/flags/pa.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pe.gif b/askbot/skins/common/media/images/flags/pe.gif
index 3bc76390..3bc76390 100755
--- a/askbot/skins/default/media/images/flags/pe.gif
+++ b/askbot/skins/common/media/images/flags/pe.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pf.gif b/askbot/skins/common/media/images/flags/pf.gif
index 849297a5..849297a5 100755
--- a/askbot/skins/default/media/images/flags/pf.gif
+++ b/askbot/skins/common/media/images/flags/pf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pg.gif b/askbot/skins/common/media/images/flags/pg.gif
index 2d20b078..2d20b078 100755
--- a/askbot/skins/default/media/images/flags/pg.gif
+++ b/askbot/skins/common/media/images/flags/pg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ph.gif b/askbot/skins/common/media/images/flags/ph.gif
index 12b380ac..12b380ac 100755
--- a/askbot/skins/default/media/images/flags/ph.gif
+++ b/askbot/skins/common/media/images/flags/ph.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pk.gif b/askbot/skins/common/media/images/flags/pk.gif
index f3f62c2e..f3f62c2e 100755
--- a/askbot/skins/default/media/images/flags/pk.gif
+++ b/askbot/skins/common/media/images/flags/pk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pl.gif b/askbot/skins/common/media/images/flags/pl.gif
index bf106463..bf106463 100755
--- a/askbot/skins/default/media/images/flags/pl.gif
+++ b/askbot/skins/common/media/images/flags/pl.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pm.gif b/askbot/skins/common/media/images/flags/pm.gif
index 99bf6fdb..99bf6fdb 100755
--- a/askbot/skins/default/media/images/flags/pm.gif
+++ b/askbot/skins/common/media/images/flags/pm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pn.gif b/askbot/skins/common/media/images/flags/pn.gif
index 4bc86a1d..4bc86a1d 100755
--- a/askbot/skins/default/media/images/flags/pn.gif
+++ b/askbot/skins/common/media/images/flags/pn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pr.gif b/askbot/skins/common/media/images/flags/pr.gif
index 6d5d5896..6d5d5896 100755
--- a/askbot/skins/default/media/images/flags/pr.gif
+++ b/askbot/skins/common/media/images/flags/pr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ps.gif b/askbot/skins/common/media/images/flags/ps.gif
index 6afa3b71..6afa3b71 100755
--- a/askbot/skins/default/media/images/flags/ps.gif
+++ b/askbot/skins/common/media/images/flags/ps.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pt.gif b/askbot/skins/common/media/images/flags/pt.gif
index e735f740..e735f740 100755
--- a/askbot/skins/default/media/images/flags/pt.gif
+++ b/askbot/skins/common/media/images/flags/pt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/pw.gif b/askbot/skins/common/media/images/flags/pw.gif
index 5854510f..5854510f 100755
--- a/askbot/skins/default/media/images/flags/pw.gif
+++ b/askbot/skins/common/media/images/flags/pw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/py.gif b/askbot/skins/common/media/images/flags/py.gif
index f2e66af7..f2e66af7 100755
--- a/askbot/skins/default/media/images/flags/py.gif
+++ b/askbot/skins/common/media/images/flags/py.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/qa.gif b/askbot/skins/common/media/images/flags/qa.gif
index 2e843ff9..2e843ff9 100755
--- a/askbot/skins/default/media/images/flags/qa.gif
+++ b/askbot/skins/common/media/images/flags/qa.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/re.gif b/askbot/skins/common/media/images/flags/re.gif
index 43d0b801..43d0b801 100755
--- a/askbot/skins/default/media/images/flags/re.gif
+++ b/askbot/skins/common/media/images/flags/re.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ro.gif b/askbot/skins/common/media/images/flags/ro.gif
index f5d5f125..f5d5f125 100755
--- a/askbot/skins/default/media/images/flags/ro.gif
+++ b/askbot/skins/common/media/images/flags/ro.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/rs.gif b/askbot/skins/common/media/images/flags/rs.gif
index 3bd1fb2f..3bd1fb2f 100644
--- a/askbot/skins/default/media/images/flags/rs.gif
+++ b/askbot/skins/common/media/images/flags/rs.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ru.gif b/askbot/skins/common/media/images/flags/ru.gif
index b525c462..b525c462 100755
--- a/askbot/skins/default/media/images/flags/ru.gif
+++ b/askbot/skins/common/media/images/flags/ru.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/rw.gif b/askbot/skins/common/media/images/flags/rw.gif
index 0d095f7a..0d095f7a 100755
--- a/askbot/skins/default/media/images/flags/rw.gif
+++ b/askbot/skins/common/media/images/flags/rw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sa.gif b/askbot/skins/common/media/images/flags/sa.gif
index 179961b6..179961b6 100755
--- a/askbot/skins/default/media/images/flags/sa.gif
+++ b/askbot/skins/common/media/images/flags/sa.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sb.gif b/askbot/skins/common/media/images/flags/sb.gif
index 8f5ff837..8f5ff837 100755
--- a/askbot/skins/default/media/images/flags/sb.gif
+++ b/askbot/skins/common/media/images/flags/sb.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sc.gif b/askbot/skins/common/media/images/flags/sc.gif
index 31b47677..31b47677 100755
--- a/askbot/skins/default/media/images/flags/sc.gif
+++ b/askbot/skins/common/media/images/flags/sc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/scotland.gif b/askbot/skins/common/media/images/flags/scotland.gif
index 03f3f1de..03f3f1de 100755
--- a/askbot/skins/default/media/images/flags/scotland.gif
+++ b/askbot/skins/common/media/images/flags/scotland.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sd.gif b/askbot/skins/common/media/images/flags/sd.gif
index 53ae214f..53ae214f 100755
--- a/askbot/skins/default/media/images/flags/sd.gif
+++ b/askbot/skins/common/media/images/flags/sd.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/se.gif b/askbot/skins/common/media/images/flags/se.gif
index 80f62852..80f62852 100755
--- a/askbot/skins/default/media/images/flags/se.gif
+++ b/askbot/skins/common/media/images/flags/se.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sg.gif b/askbot/skins/common/media/images/flags/sg.gif
index 5663d39f..5663d39f 100755
--- a/askbot/skins/default/media/images/flags/sg.gif
+++ b/askbot/skins/common/media/images/flags/sg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sh.gif b/askbot/skins/common/media/images/flags/sh.gif
index dcc7f3bc..dcc7f3bc 100755
--- a/askbot/skins/default/media/images/flags/sh.gif
+++ b/askbot/skins/common/media/images/flags/sh.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/si.gif b/askbot/skins/common/media/images/flags/si.gif
index 23852b50..23852b50 100755
--- a/askbot/skins/default/media/images/flags/si.gif
+++ b/askbot/skins/common/media/images/flags/si.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sj.gif b/askbot/skins/common/media/images/flags/sj.gif
index 6202d1f3..6202d1f3 100755
--- a/askbot/skins/default/media/images/flags/sj.gif
+++ b/askbot/skins/common/media/images/flags/sj.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sk.gif b/askbot/skins/common/media/images/flags/sk.gif
index 1b3f22ba..1b3f22ba 100755
--- a/askbot/skins/default/media/images/flags/sk.gif
+++ b/askbot/skins/common/media/images/flags/sk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sl.gif b/askbot/skins/common/media/images/flags/sl.gif
index f0f34923..f0f34923 100755
--- a/askbot/skins/default/media/images/flags/sl.gif
+++ b/askbot/skins/common/media/images/flags/sl.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sm.gif b/askbot/skins/common/media/images/flags/sm.gif
index 04d98de5..04d98de5 100755
--- a/askbot/skins/default/media/images/flags/sm.gif
+++ b/askbot/skins/common/media/images/flags/sm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sn.gif b/askbot/skins/common/media/images/flags/sn.gif
index 6dac8709..6dac8709 100755
--- a/askbot/skins/default/media/images/flags/sn.gif
+++ b/askbot/skins/common/media/images/flags/sn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/so.gif b/askbot/skins/common/media/images/flags/so.gif
index f1961694..f1961694 100755
--- a/askbot/skins/default/media/images/flags/so.gif
+++ b/askbot/skins/common/media/images/flags/so.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sr.gif b/askbot/skins/common/media/images/flags/sr.gif
index 0f7499ad..0f7499ad 100755
--- a/askbot/skins/default/media/images/flags/sr.gif
+++ b/askbot/skins/common/media/images/flags/sr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/st.gif b/askbot/skins/common/media/images/flags/st.gif
index 4f1e6e09..4f1e6e09 100755
--- a/askbot/skins/default/media/images/flags/st.gif
+++ b/askbot/skins/common/media/images/flags/st.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sv.gif b/askbot/skins/common/media/images/flags/sv.gif
index 2d7b159a..2d7b159a 100755
--- a/askbot/skins/default/media/images/flags/sv.gif
+++ b/askbot/skins/common/media/images/flags/sv.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sy.gif b/askbot/skins/common/media/images/flags/sy.gif
index dc8bd509..dc8bd509 100755
--- a/askbot/skins/default/media/images/flags/sy.gif
+++ b/askbot/skins/common/media/images/flags/sy.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/sz.gif b/askbot/skins/common/media/images/flags/sz.gif
index f37aaf80..f37aaf80 100755
--- a/askbot/skins/default/media/images/flags/sz.gif
+++ b/askbot/skins/common/media/images/flags/sz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tc.gif b/askbot/skins/common/media/images/flags/tc.gif
index 11a8c232..11a8c232 100755
--- a/askbot/skins/default/media/images/flags/tc.gif
+++ b/askbot/skins/common/media/images/flags/tc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/td.gif b/askbot/skins/common/media/images/flags/td.gif
index 7aa8a10d..7aa8a10d 100755
--- a/askbot/skins/default/media/images/flags/td.gif
+++ b/askbot/skins/common/media/images/flags/td.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tf.gif b/askbot/skins/common/media/images/flags/tf.gif
index 51a43250..51a43250 100755
--- a/askbot/skins/default/media/images/flags/tf.gif
+++ b/askbot/skins/common/media/images/flags/tf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tg.gif b/askbot/skins/common/media/images/flags/tg.gif
index ca6b4e77..ca6b4e77 100755
--- a/askbot/skins/default/media/images/flags/tg.gif
+++ b/askbot/skins/common/media/images/flags/tg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/th.gif b/askbot/skins/common/media/images/flags/th.gif
index 01307924..01307924 100755
--- a/askbot/skins/default/media/images/flags/th.gif
+++ b/askbot/skins/common/media/images/flags/th.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tj.gif b/askbot/skins/common/media/images/flags/tj.gif
index 2fe38d4a..2fe38d4a 100755
--- a/askbot/skins/default/media/images/flags/tj.gif
+++ b/askbot/skins/common/media/images/flags/tj.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tk.gif b/askbot/skins/common/media/images/flags/tk.gif
index 3d3a727f..3d3a727f 100755
--- a/askbot/skins/default/media/images/flags/tk.gif
+++ b/askbot/skins/common/media/images/flags/tk.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tl.gif b/askbot/skins/common/media/images/flags/tl.gif
index df22d582..df22d582 100755
--- a/askbot/skins/default/media/images/flags/tl.gif
+++ b/askbot/skins/common/media/images/flags/tl.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tm.gif b/askbot/skins/common/media/images/flags/tm.gif
index 36d0994f..36d0994f 100755
--- a/askbot/skins/default/media/images/flags/tm.gif
+++ b/askbot/skins/common/media/images/flags/tm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tn.gif b/askbot/skins/common/media/images/flags/tn.gif
index 917d4288..917d4288 100755
--- a/askbot/skins/default/media/images/flags/tn.gif
+++ b/askbot/skins/common/media/images/flags/tn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/to.gif b/askbot/skins/common/media/images/flags/to.gif
index d7ed4d11..d7ed4d11 100755
--- a/askbot/skins/default/media/images/flags/to.gif
+++ b/askbot/skins/common/media/images/flags/to.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tr.gif b/askbot/skins/common/media/images/flags/tr.gif
index e407d553..e407d553 100755
--- a/askbot/skins/default/media/images/flags/tr.gif
+++ b/askbot/skins/common/media/images/flags/tr.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tt.gif b/askbot/skins/common/media/images/flags/tt.gif
index 47d3b806..47d3b806 100755
--- a/askbot/skins/default/media/images/flags/tt.gif
+++ b/askbot/skins/common/media/images/flags/tt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tv.gif b/askbot/skins/common/media/images/flags/tv.gif
index 3c338277..3c338277 100755
--- a/askbot/skins/default/media/images/flags/tv.gif
+++ b/askbot/skins/common/media/images/flags/tv.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tw.gif b/askbot/skins/common/media/images/flags/tw.gif
index cacfd9b7..cacfd9b7 100755
--- a/askbot/skins/default/media/images/flags/tw.gif
+++ b/askbot/skins/common/media/images/flags/tw.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/tz.gif b/askbot/skins/common/media/images/flags/tz.gif
index 82b52ca2..82b52ca2 100755
--- a/askbot/skins/default/media/images/flags/tz.gif
+++ b/askbot/skins/common/media/images/flags/tz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ua.gif b/askbot/skins/common/media/images/flags/ua.gif
index 5d6cd83f..5d6cd83f 100755
--- a/askbot/skins/default/media/images/flags/ua.gif
+++ b/askbot/skins/common/media/images/flags/ua.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ug.gif b/askbot/skins/common/media/images/flags/ug.gif
index 58b731ad..58b731ad 100755
--- a/askbot/skins/default/media/images/flags/ug.gif
+++ b/askbot/skins/common/media/images/flags/ug.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/um.gif b/askbot/skins/common/media/images/flags/um.gif
index 3b4c8483..3b4c8483 100755
--- a/askbot/skins/default/media/images/flags/um.gif
+++ b/askbot/skins/common/media/images/flags/um.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/us.gif b/askbot/skins/common/media/images/flags/us.gif
index 8f198f73..8f198f73 100755
--- a/askbot/skins/default/media/images/flags/us.gif
+++ b/askbot/skins/common/media/images/flags/us.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/uy.gif b/askbot/skins/common/media/images/flags/uy.gif
index 12848c74..12848c74 100755
--- a/askbot/skins/default/media/images/flags/uy.gif
+++ b/askbot/skins/common/media/images/flags/uy.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/uz.gif b/askbot/skins/common/media/images/flags/uz.gif
index dc9daeca..dc9daeca 100755
--- a/askbot/skins/default/media/images/flags/uz.gif
+++ b/askbot/skins/common/media/images/flags/uz.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/va.gif b/askbot/skins/common/media/images/flags/va.gif
index 2bd74468..2bd74468 100755
--- a/askbot/skins/default/media/images/flags/va.gif
+++ b/askbot/skins/common/media/images/flags/va.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/vc.gif b/askbot/skins/common/media/images/flags/vc.gif
index 48213816..48213816 100755
--- a/askbot/skins/default/media/images/flags/vc.gif
+++ b/askbot/skins/common/media/images/flags/vc.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ve.gif b/askbot/skins/common/media/images/flags/ve.gif
index 19ce6c14..19ce6c14 100755
--- a/askbot/skins/default/media/images/flags/ve.gif
+++ b/askbot/skins/common/media/images/flags/ve.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/vg.gif b/askbot/skins/common/media/images/flags/vg.gif
index 1fc0f96e..1fc0f96e 100755
--- a/askbot/skins/default/media/images/flags/vg.gif
+++ b/askbot/skins/common/media/images/flags/vg.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/vi.gif b/askbot/skins/common/media/images/flags/vi.gif
index 66f9e746..66f9e746 100755
--- a/askbot/skins/default/media/images/flags/vi.gif
+++ b/askbot/skins/common/media/images/flags/vi.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/vn.gif b/askbot/skins/common/media/images/flags/vn.gif
index f1e20c94..f1e20c94 100755
--- a/askbot/skins/default/media/images/flags/vn.gif
+++ b/askbot/skins/common/media/images/flags/vn.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/vu.gif b/askbot/skins/common/media/images/flags/vu.gif
index 8a8b2b06..8a8b2b06 100755
--- a/askbot/skins/default/media/images/flags/vu.gif
+++ b/askbot/skins/common/media/images/flags/vu.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/wales.gif b/askbot/skins/common/media/images/flags/wales.gif
index 901d1750..901d1750 100755
--- a/askbot/skins/default/media/images/flags/wales.gif
+++ b/askbot/skins/common/media/images/flags/wales.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/wf.gif b/askbot/skins/common/media/images/flags/wf.gif
index eaa954b1..eaa954b1 100755
--- a/askbot/skins/default/media/images/flags/wf.gif
+++ b/askbot/skins/common/media/images/flags/wf.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ws.gif b/askbot/skins/common/media/images/flags/ws.gif
index a51f939e..a51f939e 100755
--- a/askbot/skins/default/media/images/flags/ws.gif
+++ b/askbot/skins/common/media/images/flags/ws.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/ye.gif b/askbot/skins/common/media/images/flags/ye.gif
index 7b0183d0..7b0183d0 100755
--- a/askbot/skins/default/media/images/flags/ye.gif
+++ b/askbot/skins/common/media/images/flags/ye.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/yt.gif b/askbot/skins/common/media/images/flags/yt.gif
index a2267c05..a2267c05 100755
--- a/askbot/skins/default/media/images/flags/yt.gif
+++ b/askbot/skins/common/media/images/flags/yt.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/za.gif b/askbot/skins/common/media/images/flags/za.gif
index ede52589..ede52589 100755
--- a/askbot/skins/default/media/images/flags/za.gif
+++ b/askbot/skins/common/media/images/flags/za.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/zm.gif b/askbot/skins/common/media/images/flags/zm.gif
index b2851d2b..b2851d2b 100755
--- a/askbot/skins/default/media/images/flags/zm.gif
+++ b/askbot/skins/common/media/images/flags/zm.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/flags/zw.gif b/askbot/skins/common/media/images/flags/zw.gif
index 02901f62..02901f62 100755
--- a/askbot/skins/default/media/images/flags/zw.gif
+++ b/askbot/skins/common/media/images/flags/zw.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/go-up-grey.png b/askbot/skins/common/media/images/go-up-grey.png
new file mode 100644
index 00000000..763bb799
--- /dev/null
+++ b/askbot/skins/common/media/images/go-up-grey.png
Binary files differ
diff --git a/askbot/skins/common/media/images/go-up-orange.png b/askbot/skins/common/media/images/go-up-orange.png
new file mode 100644
index 00000000..eca3579d
--- /dev/null
+++ b/askbot/skins/common/media/images/go-up-orange.png
Binary files differ
diff --git a/askbot/skins/common/media/images/gray-up-arrow-h18px.png b/askbot/skins/common/media/images/gray-up-arrow-h18px.png
new file mode 100755
index 00000000..78767445
--- /dev/null
+++ b/askbot/skins/common/media/images/gray-up-arrow-h18px.png
Binary files differ
diff --git a/askbot/skins/common/media/images/grippie.png b/askbot/skins/common/media/images/grippie.png
new file mode 100755
index 00000000..6524d416
--- /dev/null
+++ b/askbot/skins/common/media/images/grippie.png
Binary files differ
diff --git a/askbot/skins/common/media/images/indicator.gif b/askbot/skins/common/media/images/indicator.gif
new file mode 100755
index 00000000..1c72ebb5
--- /dev/null
+++ b/askbot/skins/common/media/images/indicator.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/logo.gif b/askbot/skins/common/media/images/logo.gif
new file mode 100644
index 00000000..ac4ceda6
--- /dev/null
+++ b/askbot/skins/common/media/images/logo.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/logo.png b/askbot/skins/common/media/images/logo.png
new file mode 100644
index 00000000..10559161
--- /dev/null
+++ b/askbot/skins/common/media/images/logo.png
Binary files differ
diff --git a/askbot/skins/common/media/images/logo1.png b/askbot/skins/common/media/images/logo1.png
new file mode 100755
index 00000000..d79a6271
--- /dev/null
+++ b/askbot/skins/common/media/images/logo1.png
Binary files differ
diff --git a/askbot/skins/common/media/images/logo2.png b/askbot/skins/common/media/images/logo2.png
new file mode 100755
index 00000000..bd3cccd9
--- /dev/null
+++ b/askbot/skins/common/media/images/logo2.png
Binary files differ
diff --git a/askbot/skins/common/media/images/mail-envelope-empty.png b/askbot/skins/common/media/images/mail-envelope-empty.png
new file mode 100644
index 00000000..0fde87dc
--- /dev/null
+++ b/askbot/skins/common/media/images/mail-envelope-empty.png
Binary files differ
diff --git a/askbot/skins/common/media/images/mail-envelope-full.png b/askbot/skins/common/media/images/mail-envelope-full.png
new file mode 100644
index 00000000..2277e919
--- /dev/null
+++ b/askbot/skins/common/media/images/mail-envelope-full.png
Binary files differ
diff --git a/askbot/skins/common/media/images/medala.gif b/askbot/skins/common/media/images/medala.gif
new file mode 100755
index 00000000..93dd1a39
--- /dev/null
+++ b/askbot/skins/common/media/images/medala.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/medala_on.gif b/askbot/skins/common/media/images/medala_on.gif
new file mode 100755
index 00000000..a18f9e85
--- /dev/null
+++ b/askbot/skins/common/media/images/medala_on.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/new.gif b/askbot/skins/common/media/images/new.gif
new file mode 100755
index 00000000..8a220b53
--- /dev/null
+++ b/askbot/skins/common/media/images/new.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/nophoto.png b/askbot/skins/common/media/images/nophoto.png
new file mode 100755
index 00000000..2daf0ffd
--- /dev/null
+++ b/askbot/skins/common/media/images/nophoto.png
Binary files differ
diff --git a/askbot/skins/common/media/images/openid.gif b/askbot/skins/common/media/images/openid.gif
new file mode 100755
index 00000000..8540e12b
--- /dev/null
+++ b/askbot/skins/common/media/images/openid.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/aol.gif b/askbot/skins/common/media/images/openid/aol.gif
index decc4f12..decc4f12 100755
--- a/askbot/skins/default/media/images/openid/aol.gif
+++ b/askbot/skins/common/media/images/openid/aol.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/blogger.ico b/askbot/skins/common/media/images/openid/blogger.ico
index 1b9730b0..1b9730b0 100755
--- a/askbot/skins/default/media/images/openid/blogger.ico
+++ b/askbot/skins/common/media/images/openid/blogger.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/claimid.ico b/askbot/skins/common/media/images/openid/claimid.ico
index 2b80f491..2b80f491 100755
--- a/askbot/skins/default/media/images/openid/claimid.ico
+++ b/askbot/skins/common/media/images/openid/claimid.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/facebook.gif b/askbot/skins/common/media/images/openid/facebook.gif
index b997b358..b997b358 100755
--- a/askbot/skins/default/media/images/openid/facebook.gif
+++ b/askbot/skins/common/media/images/openid/facebook.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/flickr.ico b/askbot/skins/common/media/images/openid/flickr.ico
index 11f6e07f..11f6e07f 100755
--- a/askbot/skins/default/media/images/openid/flickr.ico
+++ b/askbot/skins/common/media/images/openid/flickr.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/google.gif b/askbot/skins/common/media/images/openid/google.gif
index 1b6cd07b..1b6cd07b 100755
--- a/askbot/skins/default/media/images/openid/google.gif
+++ b/askbot/skins/common/media/images/openid/google.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/livejournal.ico b/askbot/skins/common/media/images/openid/livejournal.ico
index f3d21ec5..f3d21ec5 100755
--- a/askbot/skins/default/media/images/openid/livejournal.ico
+++ b/askbot/skins/common/media/images/openid/livejournal.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/myopenid.ico b/askbot/skins/common/media/images/openid/myopenid.ico
index ceb06e6a..ceb06e6a 100755
--- a/askbot/skins/default/media/images/openid/myopenid.ico
+++ b/askbot/skins/common/media/images/openid/myopenid.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/openid-inputicon.gif b/askbot/skins/common/media/images/openid/openid-inputicon.gif
index cde836c8..cde836c8 100755
--- a/askbot/skins/default/media/images/openid/openid-inputicon.gif
+++ b/askbot/skins/common/media/images/openid/openid-inputicon.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/openid.gif b/askbot/skins/common/media/images/openid/openid.gif
index c718b0e6..c718b0e6 100755
--- a/askbot/skins/default/media/images/openid/openid.gif
+++ b/askbot/skins/common/media/images/openid/openid.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/technorati.ico b/askbot/skins/common/media/images/openid/technorati.ico
index fa1083c1..fa1083c1 100755
--- a/askbot/skins/default/media/images/openid/technorati.ico
+++ b/askbot/skins/common/media/images/openid/technorati.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/twitter.png b/askbot/skins/common/media/images/openid/twitter.png
index 9a6552d1..9a6552d1 100755
--- a/askbot/skins/default/media/images/openid/twitter.png
+++ b/askbot/skins/common/media/images/openid/twitter.png
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/verisign.ico b/askbot/skins/common/media/images/openid/verisign.ico
index 3953af93..3953af93 100755
--- a/askbot/skins/default/media/images/openid/verisign.ico
+++ b/askbot/skins/common/media/images/openid/verisign.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/vidoop.ico b/askbot/skins/common/media/images/openid/vidoop.ico
index bbd9a0d5..bbd9a0d5 100755
--- a/askbot/skins/default/media/images/openid/vidoop.ico
+++ b/askbot/skins/common/media/images/openid/vidoop.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/wordpress.ico b/askbot/skins/common/media/images/openid/wordpress.ico
index 31b7d2c2..31b7d2c2 100755
--- a/askbot/skins/default/media/images/openid/wordpress.ico
+++ b/askbot/skins/common/media/images/openid/wordpress.ico
Binary files differ
diff --git a/askbot/skins/default/media/images/openid/yahoo.gif b/askbot/skins/common/media/images/openid/yahoo.gif
index 0f0eb8ef..0f0eb8ef 100755
--- a/askbot/skins/default/media/images/openid/yahoo.gif
+++ b/askbot/skins/common/media/images/openid/yahoo.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/print.png b/askbot/skins/common/media/images/print.png
new file mode 100644
index 00000000..37bf88af
--- /dev/null
+++ b/askbot/skins/common/media/images/print.png
Binary files differ
diff --git a/askbot/skins/common/media/images/pw-login.gif b/askbot/skins/common/media/images/pw-login.gif
new file mode 100644
index 00000000..f88b1bcf
--- /dev/null
+++ b/askbot/skins/common/media/images/pw-login.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/quest-bg.gif b/askbot/skins/common/media/images/quest-bg.gif
new file mode 100755
index 00000000..b7540238
--- /dev/null
+++ b/askbot/skins/common/media/images/quest-bg.gif
Binary files differ
diff --git a/askbot/skins/common/media/images/scopearrow.png b/askbot/skins/common/media/images/scopearrow.png
new file mode 100644
index 00000000..73dc6744
--- /dev/null
+++ b/askbot/skins/common/media/images/scopearrow.png
Binary files differ
diff --git a/askbot/skins/common/media/images/sprite.png b/askbot/skins/common/media/images/sprite.png
new file mode 100644
index 00000000..1a0fbc78
--- /dev/null
+++ b/askbot/skins/common/media/images/sprite.png
Binary files differ
diff --git a/askbot/skins/common/media/images/sprites.png b/askbot/skins/common/media/images/sprites.png
new file mode 100644
index 00000000..dcc1bdc3
--- /dev/null
+++ b/askbot/skins/common/media/images/sprites.png
Binary files differ
diff --git a/askbot/skins/common/media/images/sprites_source/sprites.svg b/askbot/skins/common/media/images/sprites_source/sprites.svg
new file mode 100644
index 00000000..34898e30
--- /dev/null
+++ b/askbot/skins/common/media/images/sprites_source/sprites.svg
@@ -0,0 +1,732 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg5653"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="sprites.svg">
+ <defs
+ id="defs5655">
+ <linearGradient
+ id="linearGradient3865"
+ inkscape:collect="always">
+ <stop
+ id="stop3867"
+ offset="0"
+ style="stop-color:#0975cf;stop-opacity:1" />
+ <stop
+ id="stop3869"
+ offset="1"
+ style="stop-color:#14b3de;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3824"
+ inkscape:collect="always">
+ <stop
+ id="stop3826"
+ offset="0"
+ style="stop-color:#9f9f8d;stop-opacity:1" />
+ <stop
+ id="stop3828"
+ offset="1"
+ style="stop-color:#44443a;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3812"
+ inkscape:collect="always">
+ <stop
+ id="stop3814"
+ offset="0"
+ style="stop-color:#9f9f8d;stop-opacity:1" />
+ <stop
+ id="stop3816"
+ offset="1"
+ style="stop-color:#44443a;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7944"
+ id="linearGradient7950"
+ x1="-1656.4215"
+ y1="3870.6523"
+ x2="-1656.4216"
+ y2="3887.7998"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7944">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7946" />
+ <stop
+ style="stop-color:#e4e4e4;stop-opacity:1"
+ offset="1"
+ id="stop7948" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7944"
+ id="linearGradient6226"
+ gradientUnits="userSpaceOnUse"
+ x1="-1656.4215"
+ y1="3870.6523"
+ x2="-1656.4216"
+ y2="3887.7998" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7944"
+ id="linearGradient6228"
+ gradientUnits="userSpaceOnUse"
+ x1="-1656.4215"
+ y1="3870.6523"
+ x2="-1656.4216"
+ y2="3887.7998" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5675"
+ id="radialGradient5683"
+ cx="-2600.8416"
+ cy="2819.7468"
+ fx="-2600.8416"
+ fy="2819.7468"
+ r="16.18819"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,945.88619,2917.0459)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5675">
+ <stop
+ style="stop-color:#9f9f8d;stop-opacity:1"
+ offset="0"
+ id="stop5677" />
+ <stop
+ style="stop-color:#757563;stop-opacity:1"
+ offset="1"
+ id="stop5679" />
+ </linearGradient>
+ <radialGradient
+ r="16.18819"
+ fy="2819.7468"
+ fx="-2600.8416"
+ cy="2819.7468"
+ cx="-2600.8416"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,3626.1545,288.43467)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5712"
+ xlink:href="#linearGradient5675"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3812"
+ id="radialGradient3804"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,3488.6545,301.93467)"
+ cx="-2600.8416"
+ cy="2819.7468"
+ fx="-2600.8416"
+ fy="2819.7468"
+ r="16.18819" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="radialGradient3822"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,3671.135,288.43467)"
+ cx="-2600.8416"
+ cy="2819.7468"
+ fx="-2600.8416"
+ fy="2819.7468"
+ r="16.18819" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3815"
+ id="radialGradient3821"
+ cx="222.6344"
+ cy="161.02299"
+ fx="222.6344"
+ fy="161.02299"
+ r="11.136931"
+ gradientTransform="matrix(1.0362639,-1.062432,1.063838,1.0176009,-176.68455,228.7811)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3815">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3817" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop3819" />
+ </linearGradient>
+ <radialGradient
+ r="11.136931"
+ fy="161.02299"
+ fx="222.6344"
+ cy="161.02299"
+ cx="222.6344"
+ gradientTransform="matrix(0.25937215,-1.0764281,1.4011863,0.30094439,-58.042568,347.29527)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3838"
+ xlink:href="#linearGradient3865"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath5733">
+ <rect
+ style="opacity:0.42723006;fill:#436871;fill-opacity:1;stroke:none"
+ id="rect5735"
+ width="5.5"
+ height="60.5"
+ x="-1266"
+ y="3940.3623"
+ ry="0" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5704"
+ id="linearGradient5765"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,6.3333332,234,-21267.853)"
+ x1="-1477"
+ y1="3997.8623"
+ x2="-1477"
+ y2="3976.8623" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5704">
+ <stop
+ style="stop-color:#436871;stop-opacity:1"
+ offset="0"
+ id="stop5706" />
+ <stop
+ style="stop-color:#c9dbdf;stop-opacity:0;"
+ offset="1"
+ id="stop5708" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath5776">
+ <rect
+ style="opacity:0.42723006;fill:#436871;fill-opacity:1;stroke:none"
+ id="rect5778"
+ width="5.75"
+ height="56.625"
+ x="-1260.375"
+ y="3997.4873"
+ ry="0" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5704"
+ id="linearGradient5710"
+ x1="-1477"
+ y1="3997.8623"
+ x2="-1477"
+ y2="3976.8623"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,6.3333332,1795.4506,-24803.226)" />
+ <filter
+ color-interpolation-filters="sRGB"
+ inkscape:collect="always"
+ id="filter4997-0">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.65508698"
+ id="feGaussianBlur4999-3" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4142136"
+ inkscape:cx="250.462"
+ inkscape:cy="491.05925"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1316"
+ inkscape:window-height="744"
+ inkscape:window-x="50"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <sodipodi:guide
+ orientation="0,1"
+ position="1,1061.5"
+ id="guide6194" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="62.5,992"
+ id="guide3030" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5658">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Capa 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#35575a;fill-opacity:1;stroke:none"
+ id="rect5684"
+ width="743"
+ height="355"
+ x="1"
+ y="5.3621826" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect5682"
+ width="600"
+ height="207"
+ x="58"
+ y="83.362183"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/sprites.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="87.862183"
+ x="107"
+ height="28"
+ width="243.25"
+ id="rect6341"
+ style="fill:#16160f;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#f5dd69;fill-opacity:1;stroke:none"
+ id="rect6196"
+ width="41.25"
+ height="21"
+ x="63"
+ y="87.862183" />
+ <path
+ transform="matrix(1.0191083,0,0,0.98765432,1762.2659,-3727.1824)"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:cx="-1656.5"
+ id="path7928"
+ style="fill:#c9a90d;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient7950);fill-opacity:1;stroke:none"
+ id="path7922"
+ sodipodi:cx="-1656.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ transform="matrix(1.0191083,0,0,0.98765432,1761.629,-3728.4169)" />
+ <text
+ transform="scale(1.1035306,0.90618241)"
+ xml:space="preserve"
+ style="font-size:19.10287285px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#b96161;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ x="62.464367"
+ y="112.6709"
+ id="text7924"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7926"
+ x="62.464367"
+ y="112.6709"
+ style="font-size:14.30124187px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#b96161;fill-opacity:1;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS">X</tspan></text>
+ <path
+ sodipodi:type="arc"
+ style="fill:#c9a90d;fill-opacity:1;stroke:none"
+ id="path6208"
+ sodipodi:cx="-1656.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ transform="matrix(1.0191083,0,0,0.98765432,1762.2659,-3727.1824)" />
+ <path
+ transform="matrix(1.0191083,0,0,0.98765432,1761.629,-3728.4169)"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:cx="-1656.5"
+ id="path6210"
+ style="fill:url(#linearGradient6228);fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text6212"
+ y="112.6709"
+ x="62.464367"
+ style="font-size:19.10287285px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#b96161;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ xml:space="preserve"
+ transform="scale(1.1035306,0.90618241)"><tspan
+ style="font-size:14.30124187px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#b96161;fill-opacity:1;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
+ y="112.6709"
+ x="62.464367"
+ id="tspan6214"
+ sodipodi:role="line">X</tspan></text>
+ <path
+ transform="matrix(1.0191083,0,0,0.98765432,1782.2659,-3727.1824)"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:cx="-1656.5"
+ id="path6218"
+ style="fill:#c9a90d;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient6226);fill-opacity:1;stroke:none"
+ id="path6220"
+ sodipodi:cx="-1656.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ transform="matrix(1.0191083,0,0,0.98765432,1781.629,-3728.4169)" />
+ <text
+ transform="scale(1.1035306,0.9061824)"
+ xml:space="preserve"
+ style="font-size:19.10287285px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#e90f0f;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ x="80.587997"
+ y="112.6709"
+ id="text6222"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan6224"
+ x="80.587997"
+ y="112.6709"
+ style="font-size:14.30124187px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#e90f0f;fill-opacity:1;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS">X</tspan></text>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/oxfam/arte/disenoindex.png"
+ id="path5443"
+ d="m 118.12608,94.030535 c -1.0424,-0.859469 -2.66478,-0.610365 -3.61221,0.548988 -0.95263,1.157954 -0.86987,2.798821 0.17873,3.655691 1.0444,0.861168 2.66667,0.612064 3.61631,-0.549588 0.94503,-1.162052 0.86746,-2.798222 -0.17854,-3.655591 z m 5.88263,18.686595 -12.99549,-10.6378 c -0.44703,-0.36346 -0.64755,-0.93014 -0.58638,-1.50242 -0.05,-0.11386 -0.087,-0.2505 -0.10985,-0.41064 l -1.33739,-8.835794 c -0.14424,-0.949634 0.5206,-1.76262 1.48163,-1.808503 l 8.91926,-0.441729 c 0.38495,-0.01899 1.49952,0.354863 1.78501,0.584574 l 12.99449,10.637502 c 0.74232,0.60366 0.7989,1.77001 0.12665,2.5924 l -7.71322,9.43426 c -0.66824,0.82178 -1.8207,0.99492 -2.56061,0.38925 z"
+ clip-rule="evenodd"
+ style="fill:#e7e8a8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#16160f;fill-opacity:1;fill-rule:evenodd"
+ clip-rule="evenodd"
+ d="m 118.54252,95.166497 c -0.92055,-0.758108 -2.28652,-0.618962 -3.04183,0.304482 -0.75951,0.922345 -0.62036,2.289418 0.30498,3.045526 0.92224,0.759507 2.28822,0.620461 3.04513,-0.305082 0.75321,-0.925943 0.61866,-2.289018 -0.30479,-3.045326 z m 5.77547,15.775213 -11.47288,-9.38528 c -0.39445,-0.32067 -0.58837,-0.79999 -0.56038,-1.27301 -0.047,-0.097 -0.084,-0.21191 -0.11056,-0.345863 l -1.50572,-7.398547 c -0.16224,-0.795193 0.36786,-1.442844 1.18105,-1.440845 l 7.54948,0.01 c 0.32578,3.99e-4 1.28701,0.357962 1.53911,0.560484 l 11.47158,9.385081 c 0.65525,0.53279 0.75211,1.50442 0.21612,2.15966 l -6.14833,7.51601 c -0.5325,0.65474 -1.50312,0.75031 -2.15627,0.21591 z"
+ id="path5445"
+ inkscape:export-filename="/home/bcorrales/personal/oxfam/arte/disenoindex.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:transform-center-x="0.5180824"
+ inkscape:transform-center-y="-0.28622416" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5457"
+ d="m 201.60421,88.7079 c -5.0386,0.159728 -7.45306,6.825068 -4.44845,10.23363 -5.35784,2.62945 -3.73419,8.6476 -3.90826,13.70496 6.23105,0 12.46221,0 18.69326,0 -0.0342,-5.17704 1.38659,-11.61812 -4.44823,-13.962091 3.5491,-4.275375 -0.52838,-10.736311 -5.88832,-9.976499 z"
+ style="fill:#e7e8a8;fill-opacity:1;stroke:none" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#16160f;fill-opacity:1;stroke:none"
+ id="path5461"
+ sodipodi:cx="-1766"
+ sodipodi:cy="1210.3622"
+ sodipodi:rx="20.875"
+ sodipodi:ry="19.875"
+ d="m -1746.6683,1217.8622 a 20.875,19.875 0 1 1 0.021,-0.05"
+ sodipodi:start="0.38694167"
+ sodipodi:end="6.6674319"
+ sodipodi:open="true"
+ transform="matrix(0.23246322,0,0,0.23246322,612.84081,-186.42964)" />
+ <path
+ style="fill:#16160f;fill-opacity:1;stroke:none"
+ d="m 200.32341,99.85026 c -2.77296,0 -5.03938,2.03973 -5.40307,4.70966 l -0.021,0 0,0.11384 c -0.0243,0.20805 -0.0408,0.42712 -0.0408,0.64178 0,0.21102 0.0177,0.41631 0.0408,0.62105 l 0,5.0718 15.40196,0 0,-5.0718 c 0.0232,-0.20474 0.0408,-0.41003 0.0408,-0.62105 0,-0.21466 -0.0177,-0.43373 -0.0408,-0.64178 l 0,-0.11384 -0.021,0 c -0.3638,-2.66993 -2.63021,-4.70966 -5.40306,-4.70966 l -1.03504,0 -1.35592,2.81554 -1.36629,-2.81554 -0.79699,0 z"
+ id="path5463"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:0.95734594;fill:#e7e8a8;fill-opacity:1;stroke:none"
+ d="m 287.95443,89.851557 c -1.6542,0.05548 -2.75231,2.086378 -1.97699,3.52883 -0.63135,1.023863 -1.18707,3.287681 -2.84533,2.512825 -1.58254,0.673792 -2.41713,-1.603711 -3.98172,-0.91457 -2.15656,0.508372 -2.50044,3.955277 -0.28646,4.609836 0.66658,0.118355 1.38854,0.192142 1.38577,1.016282 1.32012,1.04282 0.20536,3.35241 -1.27491,3.51052 -2.03524,0.99474 -1.52604,4.44608 0.79456,4.64673 1.48119,0.14147 2.53871,-1.5326 4.09258,-0.89608 1.17551,0.24938 1.76747,1.60242 2.05078,2.54048 -1.0087,1.8897 1.18605,4.16804 3.10405,3.20566 1.39067,-0.4601 1.85188,-2.07121 1.37652,-3.31653 0.41369,-0.83912 1.05271,-1.65965 1.6075,-2.34648 1.24643,-0.35941 2.55425,-0.14896 3.50119,0.71142 2.08378,0.88286 4.38154,-1.75378 2.95628,-3.63072 -0.53953,-1.15942 -2.19299,-0.66667 -2.50358,-1.94916 -0.82635,-1.06372 -0.34544,-2.40575 0.47111,-3.251898 0.51485,-0.512163 1.80066,-0.202313 2.15249,-1.136301 1.70737,-1.912451 -1.15266,-5.077339 -3.21491,-3.547415 -0.69552,1.09312 -1.98439,0.810455 -3.03932,0.840598 -0.98808,-0.566532 -1.66816,-1.890814 -1.84763,-2.900808 0.49774,-1.685634 -0.70875,-3.40169 -2.52198,-3.233219 z"
+ id="path5491"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path5404"
+ d="m 288.16682,91.024751 c -0.69043,0 -1.25641,0.565885 -1.25641,1.256321 0,0.415167 0.20601,0.779571 0.51734,1.006942 l -2.22628,3.815471 -4.22185,-0.0092 c 0,0 0,-0.0092 0,-0.0092 -0.11993,-0.565515 -0.62747,-0.988542 -1.22877,-0.988542 -0.69034,0 -1.24707,0.556638 -1.24707,1.247166 0,0.690435 0.55673,1.247074 1.24707,1.247074 0.21813,0 0.4221,-0.05825 0.60056,-0.156913 l 2.01389,3.51967 -1.85688,3.19642 c -0.13232,-0.0472 -0.27629,-0.0841 -0.42497,-0.0841 -0.69044,0 -1.24717,0.55673 -1.24717,1.24726 0,0.69052 0.55673,1.25641 1.24717,1.25641 0.54915,0 1.01452,-0.35784 1.18244,-0.84994 l 3.88926,-0.0185 2.19872,3.72291 c -0.28692,0.22904 -0.48036,0.57421 -0.48036,0.96996 0,0.69053 0.55664,1.24726 1.24717,1.24726 0.69044,0 1.25641,-0.55673 1.25641,-1.24726 0,-0.37153 -0.16764,-0.70403 -0.42497,-0.93297 l 2.24487,-3.7599 4.02786,-0.009 c 0.13796,0.54037 0.62682,0.94231 1.21018,0.94231 0.69053,0 1.24717,-0.55673 1.24717,-1.24716 0,-0.69053 -0.55664,-1.25642 -1.24717,-1.25642 -0.18003,0 -0.3534,0.0425 -0.5081,0.11087 l -1.95849,-3.4089 2.05087,-3.538262 c 0.18262,0.104485 0.38447,0.166344 0.60971,0.166344 0.69053,0 1.25641,-0.556638 1.25641,-1.247073 0,-0.690621 -0.56588,-1.247259 -1.25641,-1.247259 -0.63921,0 -1.15415,0.480262 -1.22867,1.099407 l -4.13864,0.01849 -2.32808,-3.833871 c 0.28794,-0.229035 0.48045,-0.573467 0.48045,-0.969956 0,-0.690528 -0.55673,-1.256413 -1.24726,-1.256413 z"
+ style="opacity:0.95734594;fill:#16160f;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.05048908,0,0,0.04995915,432.79113,-34.802929)"
+ d="m -2780.5,2735.8623 a 83.5,82.5 0 1 1 -167,0 83.5,82.5 0 1 1 167,0 z"
+ sodipodi:ry="82.5"
+ sodipodi:rx="83.5"
+ sodipodi:cy="2735.8623"
+ sodipodi:cx="-2864"
+ id="path5754"
+ style="opacity:0.95734594;fill:#e7e8a8;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <rect
+ style="fill:#e9e9e1;fill-opacity:1;stroke:none"
+ id="rect3032"
+ width="45"
+ height="55"
+ x="62.5"
+ y="119.61218" />
+ <path
+ style="fill:url(#radialGradient5712);fill-opacity:1"
+ d="m 67.6121,160.27637 c -0.094,-0.046 -0.2146,-0.1465 -0.2675,-0.2235 -0.092,-0.1328 -0.097,-0.507 -0.1104,-7.2852 l -0.014,-7.1451 5.5933,-4.8985 c 3.0763,-2.6941 5.6262,-4.9108 5.6664,-4.9262 0.044,-0.017 2.2915,1.9154 5.6947,4.8961 l 5.6214,4.9239 -0.014,7.1474 c -0.013,6.7953 -0.019,7.1546 -0.1108,7.2883 -0.2172,0.3162 -0.1184,0.3086 -4.0168,0.3086 l -3.5623,0 -6e-4,-3.0266 c -6e-4,-1.6648 -0.016,-3.1187 -0.035,-3.2313 -0.022,-0.1319 -0.098,-0.2677 -0.2151,-0.3832 l -0.1811,-0.1789 -3.1523,0 -3.1523,0 -0.181,0.1789 c -0.1168,0.1155 -0.1931,0.2513 -0.2152,0.3832 -0.019,0.1126 -0.034,1.5665 -0.035,3.2313 l -5e-4,3.0266 -3.5704,0 c -3.1432,0 -3.591,-0.012 -3.7418,-0.085 z m -4.3178,-15.0177 c -0.4595,-0.5139 -0.817,-0.9502 -0.7943,-0.9695 0.023,-0.019 3.6131,-3.1609 7.9784,-6.9811 4.3654,-3.82019 7.9797,-6.94589 8.0317,-6.94589 0.052,0 3.6512,3.11599 7.9984,6.92429 4.3473,3.8085 7.9377,6.949 7.9789,6.9791 0.059,0.043 -0.096,0.24591 -0.764,0.9929 -0.7293,0.8159 -0.8498,0.9293 -0.9245,0.8704 -0.047,-0.038 -3.2709,-2.8571 -7.1641,-6.26639 -3.8931,-3.40961 -7.0985,-6.1989 -7.1231,-6.1989 -0.025,0 -3.2475,2.8051 -7.1619,6.23339 -3.9144,3.4285 -7.1401,6.2475 -7.1685,6.2648 -0.028,0.018 -0.4273,-0.3892 -0.887,-0.9031 z m 3.9274,-9.9518 0,-2.96499 2.0326,0 2.0326,0 0,0.9707 c 0,1.5539 0.2495,1.16 -2.0161,3.1826 -1.0729,0.95779 -1.9729,1.74949 -1.9999,1.75909 -0.03,0.011 -0.048,-1.1677 -0.048,-2.9474 z"
+ id="path5673"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3802"
+ d="m -69.8879,173.77637 c -0.094,-0.046 -0.2146,-0.1465 -0.2675,-0.2235 -0.092,-0.1328 -0.097,-0.507 -0.1104,-7.2852 l -0.014,-7.1451 5.5933,-4.8985 c 3.0763,-2.6941 5.6262,-4.9108 5.6664,-4.9262 0.044,-0.017 2.2915,1.9154 5.6947,4.8961 l 5.6214,4.9239 -0.014,7.1474 c -0.013,6.7953 -0.019,7.1546 -0.1108,7.2883 -0.2172,0.3162 -0.1184,0.3086 -4.0168,0.3086 l -3.5623,0 -6e-4,-3.0266 c -6e-4,-1.6648 -0.016,-3.1187 -0.035,-3.2313 -0.022,-0.1319 -0.098,-0.2677 -0.2151,-0.3832 l -0.1811,-0.1789 -3.1523,0 -3.1523,0 -0.181,0.1789 c -0.1168,0.1155 -0.1931,0.2513 -0.2152,0.3832 -0.019,0.1126 -0.034,1.5665 -0.035,3.2313 l -5e-4,3.0266 -3.5704,0 c -3.1432,0 -3.591,-0.012 -3.7418,-0.085 z m -4.3178,-15.0177 c -0.4595,-0.5139 -0.817,-0.9502 -0.7943,-0.9695 0.023,-0.019 3.6131,-3.1609 7.9784,-6.9811 4.3654,-3.82019 7.9797,-6.94589 8.0317,-6.94589 0.052,0 3.6512,3.11599 7.9984,6.92429 4.3473,3.8085 7.9377,6.949 7.9789,6.9791 0.059,0.043 -0.096,0.24591 -0.764,0.9929 -0.7293,0.8159 -0.8498,0.9293 -0.9245,0.8704 -0.047,-0.038 -3.2709,-2.8571 -7.1641,-6.26639 -3.8931,-3.40961 -7.0985,-6.1989 -7.1231,-6.1989 -0.025,0 -3.2475,2.8051 -7.1619,6.23339 -3.9144,3.4285 -7.1401,6.2475 -7.1685,6.2648 -0.028,0.018 -0.4273,-0.3892 -0.887,-0.9031 z m 3.9274,-9.9518 0,-2.96499 2.0326,0 2.0326,0 0,0.9707 c 0,1.5539 0.2495,1.16 -2.0161,3.1826 -1.0729,0.95779 -1.9729,1.74949 -1.9999,1.75909 -0.03,0.011 -0.048,-1.1677 -0.048,-2.9474 z"
+ style="fill:url(#radialGradient3804);fill-opacity:1" />
+ <rect
+ y="119.61218"
+ x="107.48047"
+ height="55"
+ width="45"
+ id="rect3818"
+ style="fill:#e9e9e1;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3820"
+ d="m 112.59257,160.27637 c -0.094,-0.046 -0.2146,-0.1465 -0.2675,-0.2235 -0.092,-0.1328 -0.097,-0.507 -0.1104,-7.2852 l -0.014,-7.1451 5.5933,-4.8985 c 3.0763,-2.6941 5.6262,-4.9108 5.6664,-4.9262 0.044,-0.017 2.2915,1.9154 5.6947,4.8961 l 5.6214,4.9239 -0.014,7.1474 c -0.013,6.7953 -0.019,7.1546 -0.1108,7.2883 -0.2172,0.3162 -0.1184,0.3086 -4.0168,0.3086 l -3.5623,0 -6e-4,-3.0266 c -6e-4,-1.6648 -0.016,-3.1187 -0.035,-3.2313 -0.022,-0.1319 -0.098,-0.2677 -0.2151,-0.3832 l -0.1811,-0.1789 -3.1523,0 -3.1523,0 -0.181,0.1789 c -0.1168,0.1155 -0.1931,0.2513 -0.2152,0.3832 -0.019,0.1126 -0.034,1.5665 -0.035,3.2313 l -5e-4,3.0266 -3.5704,0 c -3.1432,0 -3.591,-0.012 -3.7418,-0.085 z m -4.3178,-15.0177 c -0.4595,-0.5139 -0.817,-0.9502 -0.7943,-0.9695 0.023,-0.019 3.6131,-3.1609 7.9784,-6.9811 4.3654,-3.82019 7.9797,-6.94589 8.0317,-6.94589 0.052,0 3.6512,3.11599 7.9984,6.92429 4.3473,3.8085 7.9377,6.949 7.9789,6.9791 0.059,0.043 -0.096,0.24591 -0.764,0.9929 -0.7293,0.8159 -0.8498,0.9293 -0.9245,0.8704 -0.047,-0.038 -3.2709,-2.8571 -7.1641,-6.26639 -3.8931,-3.40961 -7.0985,-6.1989 -7.1231,-6.1989 -0.025,0 -3.2475,2.8051 -7.1619,6.23339 -3.9144,3.4285 -7.1401,6.2475 -7.1685,6.2648 -0.028,0.018 -0.4273,-0.3892 -0.887,-0.9031 z m 3.9274,-9.9518 0,-2.96499 2.0326,0 2.0326,0 0,0.9707 c 0,1.5539 0.2495,1.16 -2.0161,3.1826 -1.0729,0.95779 -1.9729,1.74949 -1.9999,1.75909 -0.03,0.011 -0.048,-1.1677 -0.048,-2.9474 z"
+ style="fill:url(#radialGradient3822);fill-opacity:1" />
+ <rect
+ style="opacity:0.79620852;fill:#deded0;fill-opacity:1;stroke:none"
+ id="rect4547"
+ width="48"
+ height="40"
+ x="155.08926"
+ y="120.0357" />
+ <image
+ width="35.911209"
+ height="35.911209"
+ xlink:href="data:image/png;base64,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 "
+ id="image4549"
+ x="162.0482"
+ y="122.71503" />
+ <rect
+ y="120.0357"
+ x="203.07843"
+ height="40"
+ width="48"
+ id="rect3861"
+ style="opacity:0.79620852;fill:#deded0;fill-opacity:1;stroke:none" />
+ <image
+ y="122.71503"
+ x="210.03737"
+ id="image3863"
+ xlink:href="data:image/png;base64,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 "
+ height="35.911209"
+ width="35.911209" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient3838);fill-opacity:1;stroke:none"
+ id="path3813"
+ sodipodi:cx="223.62251"
+ sodipodi:cy="147.08873"
+ sodipodi:rx="11.136931"
+ sodipodi:ry="9.0156116"
+ d="m 234.75944,147.08873 a 11.136931,9.0156116 0 1 1 -22.27386,0 11.136931,9.0156116 0 1 1 22.27386,0 z"
+ transform="matrix(1.2054549,0,0,1.1341085,-41.21305,-21.172626)" />
+ <rect
+ ry="4.1932693"
+ y="467.85327"
+ x="215.2729"
+ height="43.25"
+ width="200.58887"
+ id="rect4912"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4914"
+ d="m 219.19773,467.616 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="matrix(0.91683189,0,0,1,2564.1856,-830.04452)"
+ style="fill:#555753;fill-opacity:0.68306011;stroke:none;filter:url(#filter4997-0)"
+ id="rect4917"
+ width="218.78479"
+ height="43.25"
+ x="-2560"
+ y="1248.6122"
+ ry="4.1932693"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ ry="4.1932693"
+ y="417.31763"
+ x="216.40852"
+ height="43.25"
+ width="200.58887"
+ id="rect4919"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4921"
+ d="m 220.33333,417.0805 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ style="fill:url(#linearGradient5710);fill-opacity:1;stroke:none"
+ id="rect5702"
+ width="200.58887"
+ height="42.75"
+ x="216.40852"
+ y="417.31763"
+ ry="4.1447921" />
+ <text
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ xml:space="preserve"
+ style="font-size:18.32528687px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#c6d9dd;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ x="258.99481"
+ y="445.8772"
+ id="text5782"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5784"
+ x="258.99481"
+ y="445.8772"
+ style="font-size:23px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c6d9dd;fill-opacity:1;font-family:Yanone Kaffeesatz;-inkscape-font-specification:Yanone Kaffeesatz">ASK A QUESTION</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4923"
+ y="444.99341"
+ x="258.99481"
+ style="font-size:18.32528687px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#314e55;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ style="font-size:23px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#314e55;fill-opacity:1;font-family:Yanone Kaffeesatz;-inkscape-font-specification:Yanone Kaffeesatz"
+ y="444.99341"
+ x="258.99481"
+ id="tspan4926"
+ sodipodi:role="line">ASK A QUESTION</tspan></text>
+ <g
+ id="g5771"
+ clip-path="url(#clipPath5776)"
+ transform="matrix(0.95652174,0,0,0.9658003,1661.0255,-3400.1079)"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/bigbutton.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ ry="4.1932693"
+ y="4000.7271"
+ x="-1346.1777"
+ height="43.25"
+ width="200.58887"
+ id="rect5712"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5714"
+ d="m -1342.2529,4000.4898 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <g
+ id="g5728"
+ clip-path="url(#clipPath5733)"
+ transform="matrix(1,0,0,0.96580351,1721.4506,-3395.7266)"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/bigbutton.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ ry="4.1932693"
+ y="3952.6914"
+ x="-1345.0421"
+ height="43.25"
+ width="200.58887"
+ id="rect5718"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5720"
+ d="m -1341.1173,3952.4543 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ style="fill:url(#linearGradient5765);fill-opacity:1;stroke:none"
+ id="rect5722"
+ width="200.58887"
+ height="42.75"
+ x="-1345.0421"
+ y="3952.6914"
+ ry="4.1447921" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ style="fill:#eceeeb;fill-opacity:1;stroke:none"
+ id="rect8138"
+ width="200"
+ height="34"
+ x="208.43501"
+ y="563.99463" />
+ <path
+ style="fill:#cfcdcb;fill-opacity:1;stroke:none"
+ d="m 237.10314,570.64836 c -4.1222,0 -7.6717,2.6492 -9.375,6.5 -0.6289,-0.2342 -1.2957,-0.375 -2,-0.375 -1.9564,0 -3.7033,0.9745 -4.8125,2.5 l -11.8437,0.125 0,7.3125 11.5312,-0.094 c 1.0734,1.8106 2.9601,3.0313 5.125,3.0313 1.022,0 1.9677,-0.2764 2.8125,-0.75 1.8902,3.0125 5.0068,4.9687 8.5625,4.9687 3.7337,0 7.0246,-2.1669 8.875,-5.4374 l -4.8125,0 c -1.0612,0.806 -2.5249,0.8124 -3.9063,0.8124 -3.6563,0 -4.8124,-2.9663 -4.8124,-7.0312 0,-4.0647 1.4686,-6.625 5.125,-6.625 1.7505,0 3.2224,0.1762 4.4062,1.4062 l 4.4688,0 c -1.7287,-3.7705 -5.2744,-6.3437 -9.3438,-6.3437 z"
+ id="rect5882"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/contributorsback.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+</svg>
diff --git a/askbot/skins/common/media/images/summary-background.png b/askbot/skins/common/media/images/summary-background.png
new file mode 100644
index 00000000..58c3855a
--- /dev/null
+++ b/askbot/skins/common/media/images/summary-background.png
Binary files differ
diff --git a/askbot/skins/common/media/images/tag-left.png b/askbot/skins/common/media/images/tag-left.png
new file mode 100644
index 00000000..5a9d8a0d
--- /dev/null
+++ b/askbot/skins/common/media/images/tag-left.png
Binary files differ
diff --git a/askbot/skins/common/media/images/tag-right.png b/askbot/skins/common/media/images/tag-right.png
new file mode 100644
index 00000000..871664c3
--- /dev/null
+++ b/askbot/skins/common/media/images/tag-right.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-accepted-on.png b/askbot/skins/common/media/images/vote-accepted-on.png
new file mode 100755
index 00000000..2026f3bc
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-accepted-on.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-accepted.png b/askbot/skins/common/media/images/vote-accepted.png
new file mode 100755
index 00000000..ecd18551
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-accepted.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-arrow-down-on.png b/askbot/skins/common/media/images/vote-arrow-down-on.png
new file mode 100755
index 00000000..048dbb44
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-arrow-down-on.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-arrow-down.png b/askbot/skins/common/media/images/vote-arrow-down.png
new file mode 100755
index 00000000..e4fdec0a
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-arrow-down.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-arrow-up-on.png b/askbot/skins/common/media/images/vote-arrow-up-on.png
new file mode 100755
index 00000000..56ad0c25
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-arrow-up-on.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-arrow-up.png b/askbot/skins/common/media/images/vote-arrow-up.png
new file mode 100755
index 00000000..6e9a51c7
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-arrow-up.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-favorite-off.png b/askbot/skins/common/media/images/vote-favorite-off.png
new file mode 100755
index 00000000..c1bef074
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-favorite-off.png
Binary files differ
diff --git a/askbot/skins/common/media/images/vote-favorite-on.png b/askbot/skins/common/media/images/vote-favorite-on.png
new file mode 100755
index 00000000..1f9c14ab
--- /dev/null
+++ b/askbot/skins/common/media/images/vote-favorite-on.png
Binary files differ
diff --git a/askbot/skins/common/media/images/wiki.png b/askbot/skins/common/media/images/wiki.png
new file mode 100644
index 00000000..06d487f3
--- /dev/null
+++ b/askbot/skins/common/media/images/wiki.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/aol.gif b/askbot/skins/common/media/jquery-openid/images/aol.gif
index 24d1e152..24d1e152 100755
--- a/askbot/skins/default/media/jquery-openid/images/aol.gif
+++ b/askbot/skins/common/media/jquery-openid/images/aol.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/blogger-1.png b/askbot/skins/common/media/jquery-openid/images/blogger-1.png
index 8b360ea5..8b360ea5 100755
--- a/askbot/skins/default/media/jquery-openid/images/blogger-1.png
+++ b/askbot/skins/common/media/jquery-openid/images/blogger-1.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/blogger.ico b/askbot/skins/common/media/jquery-openid/images/blogger.ico
index 1b9730b0..1b9730b0 100755
--- a/askbot/skins/default/media/jquery-openid/images/blogger.ico
+++ b/askbot/skins/common/media/jquery-openid/images/blogger.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/claimid-0.png b/askbot/skins/common/media/jquery-openid/images/claimid-0.png
index 4a0ea1b3..4a0ea1b3 100755
--- a/askbot/skins/default/media/jquery-openid/images/claimid-0.png
+++ b/askbot/skins/common/media/jquery-openid/images/claimid-0.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/claimid.ico b/askbot/skins/common/media/jquery-openid/images/claimid.ico
index 2b80f491..2b80f491 100755
--- a/askbot/skins/default/media/jquery-openid/images/claimid.ico
+++ b/askbot/skins/common/media/jquery-openid/images/claimid.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/facebook.gif b/askbot/skins/common/media/jquery-openid/images/facebook.gif
index c5586455..c5586455 100755
--- a/askbot/skins/default/media/jquery-openid/images/facebook.gif
+++ b/askbot/skins/common/media/jquery-openid/images/facebook.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/flickr.ico b/askbot/skins/common/media/jquery-openid/images/flickr.ico
index 11f6e07f..11f6e07f 100755
--- a/askbot/skins/default/media/jquery-openid/images/flickr.ico
+++ b/askbot/skins/common/media/jquery-openid/images/flickr.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/flickr.png b/askbot/skins/common/media/jquery-openid/images/flickr.png
index 142405a6..142405a6 100755
--- a/askbot/skins/default/media/jquery-openid/images/flickr.png
+++ b/askbot/skins/common/media/jquery-openid/images/flickr.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/google.gif b/askbot/skins/common/media/jquery-openid/images/google.gif
index 65395365..65395365 100755
--- a/askbot/skins/default/media/jquery-openid/images/google.gif
+++ b/askbot/skins/common/media/jquery-openid/images/google.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/identica.png b/askbot/skins/common/media/jquery-openid/images/identica.png
index 2b607db1..2b607db1 100644
--- a/askbot/skins/default/media/jquery-openid/images/identica.png
+++ b/askbot/skins/common/media/jquery-openid/images/identica.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/linkedin.gif b/askbot/skins/common/media/jquery-openid/images/linkedin.gif
index 36e049ac..36e049ac 100644
--- a/askbot/skins/default/media/jquery-openid/images/linkedin.gif
+++ b/askbot/skins/common/media/jquery-openid/images/linkedin.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/livejournal-1.png b/askbot/skins/common/media/jquery-openid/images/livejournal-1.png
index e6436081..e6436081 100755
--- a/askbot/skins/default/media/jquery-openid/images/livejournal-1.png
+++ b/askbot/skins/common/media/jquery-openid/images/livejournal-1.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/livejournal.ico b/askbot/skins/common/media/jquery-openid/images/livejournal.ico
index f3d21ec5..f3d21ec5 100755
--- a/askbot/skins/default/media/jquery-openid/images/livejournal.ico
+++ b/askbot/skins/common/media/jquery-openid/images/livejournal.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/myopenid-2.png b/askbot/skins/common/media/jquery-openid/images/myopenid-2.png
index f64fb8e8..f64fb8e8 100755
--- a/askbot/skins/default/media/jquery-openid/images/myopenid-2.png
+++ b/askbot/skins/common/media/jquery-openid/images/myopenid-2.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/myopenid.ico b/askbot/skins/common/media/jquery-openid/images/myopenid.ico
index ceb06e6a..ceb06e6a 100755
--- a/askbot/skins/default/media/jquery-openid/images/myopenid.ico
+++ b/askbot/skins/common/media/jquery-openid/images/myopenid.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/openid-inputicon.gif b/askbot/skins/common/media/jquery-openid/images/openid-inputicon.gif
index cde836c8..cde836c8 100755
--- a/askbot/skins/default/media/jquery-openid/images/openid-inputicon.gif
+++ b/askbot/skins/common/media/jquery-openid/images/openid-inputicon.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/openid.gif b/askbot/skins/common/media/jquery-openid/images/openid.gif
index 19eb7c6f..19eb7c6f 100755
--- a/askbot/skins/default/media/jquery-openid/images/openid.gif
+++ b/askbot/skins/common/media/jquery-openid/images/openid.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/openidico.png b/askbot/skins/common/media/jquery-openid/images/openidico.png
index ab622669..ab622669 100755
--- a/askbot/skins/default/media/jquery-openid/images/openidico.png
+++ b/askbot/skins/common/media/jquery-openid/images/openidico.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/openidico16.png b/askbot/skins/common/media/jquery-openid/images/openidico16.png
index ad718ac5..ad718ac5 100755
--- a/askbot/skins/default/media/jquery-openid/images/openidico16.png
+++ b/askbot/skins/common/media/jquery-openid/images/openidico16.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/technorati-1.png b/askbot/skins/common/media/jquery-openid/images/technorati-1.png
index f7195240..f7195240 100755
--- a/askbot/skins/default/media/jquery-openid/images/technorati-1.png
+++ b/askbot/skins/common/media/jquery-openid/images/technorati-1.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/technorati.ico b/askbot/skins/common/media/jquery-openid/images/technorati.ico
index fa1083c1..fa1083c1 100755
--- a/askbot/skins/default/media/jquery-openid/images/technorati.ico
+++ b/askbot/skins/common/media/jquery-openid/images/technorati.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/twitter.gif b/askbot/skins/common/media/jquery-openid/images/twitter.gif
index 173cace1..173cace1 100644
--- a/askbot/skins/default/media/jquery-openid/images/twitter.gif
+++ b/askbot/skins/common/media/jquery-openid/images/twitter.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/verisign-2.png b/askbot/skins/common/media/jquery-openid/images/verisign-2.png
index c1467008..c1467008 100755
--- a/askbot/skins/default/media/jquery-openid/images/verisign-2.png
+++ b/askbot/skins/common/media/jquery-openid/images/verisign-2.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/verisign.ico b/askbot/skins/common/media/jquery-openid/images/verisign.ico
index 3953af93..3953af93 100755
--- a/askbot/skins/default/media/jquery-openid/images/verisign.ico
+++ b/askbot/skins/common/media/jquery-openid/images/verisign.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/vidoop.ico b/askbot/skins/common/media/jquery-openid/images/vidoop.ico
index bbd9a0d5..bbd9a0d5 100755
--- a/askbot/skins/default/media/jquery-openid/images/vidoop.ico
+++ b/askbot/skins/common/media/jquery-openid/images/vidoop.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/vidoop.png b/askbot/skins/common/media/jquery-openid/images/vidoop.png
index 032c9e98..032c9e98 100755
--- a/askbot/skins/default/media/jquery-openid/images/vidoop.png
+++ b/askbot/skins/common/media/jquery-openid/images/vidoop.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/wordpress.ico b/askbot/skins/common/media/jquery-openid/images/wordpress.ico
index 31b7d2c2..31b7d2c2 100755
--- a/askbot/skins/default/media/jquery-openid/images/wordpress.ico
+++ b/askbot/skins/common/media/jquery-openid/images/wordpress.ico
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/wordpress.png b/askbot/skins/common/media/jquery-openid/images/wordpress.png
index ee29f0cf..ee29f0cf 100755
--- a/askbot/skins/default/media/jquery-openid/images/wordpress.png
+++ b/askbot/skins/common/media/jquery-openid/images/wordpress.png
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/images/yahoo.gif b/askbot/skins/common/media/jquery-openid/images/yahoo.gif
index 614910a9..614910a9 100755
--- a/askbot/skins/default/media/jquery-openid/images/yahoo.gif
+++ b/askbot/skins/common/media/jquery-openid/images/yahoo.gif
Binary files differ
diff --git a/askbot/skins/common/media/jquery-openid/jquery.openid.js b/askbot/skins/common/media/jquery-openid/jquery.openid.js
new file mode 100644
index 00000000..1d972b55
--- /dev/null
+++ b/askbot/skins/common/media/jquery-openid/jquery.openid.js
@@ -0,0 +1,436 @@
+$.fn.authenticator = function() {
+ var signin_page = $(this);
+ var signin_form = $('#signin-form');
+ var openid_login_token_input = $('input[name=openid_login_token]');
+ var openid_login_token_input_fields = $('#openid-fs');
+ var provider_name_input = $('input[name=login_provider_name]');
+ var email_input_fields = $('#email-input-fs');
+ var account_recovery_heading = $('#account-recovery-heading');
+ var account_recovery_hint = $('#account-recovery-form>.hint');
+ var account_recovery_link = $('#account-recovery-form>.hint>span.link');
+ var account_recovery_text_span = $('#account-recovery-form>.hint>span.text');
+ var password_input_fields = $('#password-fs');
+ var existing_login_methods_div = $('#existing-login-methods');
+ var openid_submit_button = $('input[name=openid_login_with_extra_token]');
+ var existing_login_methods = {};
+
+ var account_recovery_question_text = account_recovery_heading.html();
+ var account_recovery_prompt_text = account_recovery_text_span.html();
+
+ var setup_click_handler = function(elements, handler_function){
+ elements.unbind('click').click(handler_function);
+ };
+
+ var setup_enter_key_handler = function(elements, handler_function){
+ elements.each(
+ function(index, element){
+ $(element).unbind('keypress').keypress(
+ function(e){
+ if ((e.which && e.which == 13)||(e.keyCode && e.keyCode == 13)){
+ if (handler_function){
+ return handler_function();
+ }
+ else {
+ element.click();
+ return false;
+ }
+ }
+ }
+ );
+ }
+ );
+ };
+
+ var setup_event_handlers = function(elements, handler_function){
+ setup_click_handler(elements, handler_function);
+ setup_enter_key_handler(elements);
+ };
+
+ var get_provider_name = function(row_el){
+ var row = $(row_el);
+ var name_span = row.find('.ab-provider-name');
+ return provider_name = $.trim(name_span.html());
+ };
+
+ var read_existing_login_methods = function(){
+ $('.ab-provider-row').each(
+ function(i, provider_row){
+ var provider_name = get_provider_name(provider_row);
+ existing_login_methods[provider_name] = true;
+ }
+ );
+ };
+
+ var setup_login_method_deleters = function(){
+ $('.ab-provider-row').each(
+ function(i, provider_row){
+ var provider_name = get_provider_name(provider_row);
+ var remove_button = $(
+ provider_row
+ ).find('button');
+ remove_button.click(
+ function(){
+ var message = interpolate(gettext('Are you sure you want to remove your %s login?'), [provider_name]);
+ if (confirm(message)){
+ $.ajax({
+ type: 'POST',
+ url: authUrl + 'delete_login_method/',//url!!!
+ data: {provider_name: provider_name},
+ success: function(data, text_status, xhr){
+ $(provider_row).remove();
+ delete existing_login_methods[provider_name];
+ provider_count -=1;
+ if (provider_count < 0){
+ provider_count === 0;
+ }
+ if (provider_count === 0){
+ $('#ab-existing-login-methods').remove();
+ $('#ab-show-login-methods').remove();
+ $('h1').html(
+ gettext("Please add one or more login methods.")
+ );
+ $('#login-intro').html(
+ gettext("You don\'t have a method to log in right now, please add one or more by clicking any of the icons below.")
+ );
+ existing_login_methods = null;
+ }
+ }
+ });
+ }
+ }
+ );
+ }
+ );
+ }
+
+ var submit_login_with_password = function(){
+ var username = $('#id_username');
+ var password = $('#id_password');
+
+ if (username.val().length < 1){
+ username.focus();
+ return false;
+ }
+ if (password.val().length < 1){
+ password.focus();
+ return false;
+ }
+ return true;
+ };
+
+ var submit_change_password = function(){
+ var newpass = $('#id_new_password');
+ var newpass_retyped = $('#id_new_password_retyped');
+ if (newpass.val().length < 1){
+ newpass.focus();
+ return false
+ }
+ if (newpass_retyped.val().length < 1){
+ newpass_retyped.focus();
+ return false;
+ }
+ if (newpass.val() !== newpass_retyped.val()){
+ newpass_retyped.after(
+ '<span class="error">' +
+ gettext('passwords do not match') +
+ '</span>'
+ );
+ newpass.val('').focus();
+ newpass_retyped.val('');
+ return false;
+ }
+ return true;
+ };
+
+ //validator, may be extended to check url for openid
+ var submit_with_extra_openid_token = function() {
+ if (openid_login_token_input.val().length < 1) {
+ openid_login_token_input.focus();
+ return false;
+ }
+ return true;
+ };
+
+ var insert_login_list_enabler = function(){
+ var enabler = $('#login-list-enabler');
+ if (enabler.is('p#login-list-enabler')){
+ enabler.show();
+ }
+ else {
+ enabler = $(
+ '<p id="login-list-enabler"><a href="#">' +
+ gettext('Show/change current login methods') +
+ '</a></p>');
+ setup_event_handlers(
+ enabler,
+ function(){
+ if (askbot['settings']['signin_always_show_local_login'] === false){
+ password_input_fields.hide();
+ }
+ openid_login_token_input_fields.hide();
+ enabler.hide();
+ existing_login_methods_div.show();
+ }
+ );
+ existing_login_methods_div.after(enabler);
+ }
+ };
+
+ var reset_password_input_fields = function(){
+ if (userIsAuthenticated){
+ $('#id_new_password').val('');
+ $('#id_new_password_retyped').val('');
+ }
+ else {
+ $('#id_username').val('');
+ $('#id_password').val('');
+ }
+ };
+
+ var reset_form = function(){
+ openid_login_token_input_fields.hide();
+ if (askbot['settings']['signin_always_show_local_login'] === false){
+ password_input_fields.hide();
+ }
+ reset_password_input_fields();
+ $('.error').remove();
+ if (userIsAuthenticated === false){
+ email_input_fields.hide();
+ account_recovery_heading.hide();
+ account_recovery_link.show();
+ account_recovery_hint.show();
+ $('#account-recovery-form>p.hint').css('margin-top','10px');
+ account_recovery_text_span.html(account_recovery_question_text).show();
+ }
+ else {
+ if (existing_login_methods !== null){
+ existing_login_methods_div.hide();
+ insert_login_list_enabler();
+ }
+ }
+ };
+
+ 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();
+ var token_name = extra_token_name[provider_name]
+ if (userIsAuthenticated){
+ $('#openid-heading').html(
+ interpolate(gettext('Please enter your %s, then proceed'), [token_name])
+ );
+ var button_text = gettext('Connect your %(provider_name)s account to %(site)s');
+ var data = {
+ provider_name: provider_name,
+ site: siteName
+ }
+ button_text = interpolate(button_text, data, true);
+ openid_submit_button.val(button_text);
+ }
+ else {
+ $('#openid-heading>span').html(token_name);
+ }
+ openid_login_token_input_fields.show();
+ openid_login_token_input.focus();
+ };
+
+ var start_simple_login = function() {
+ //$('#openid_form .providers td').removeClass('highlight');
+ //$li.addClass('highlight');
+ set_provider_name($(this));
+ signin_form.submit();
+ return true;
+ };
+
+ var start_login_with_extra_openid_token = function() {
+ show_openid_input_fields($(this).attr('name'));
+ set_provider_name($(this));
+
+ setup_enter_key_handler(
+ openid_login_token_input,
+ function(){
+ openid_submit_button.click();
+ return false;
+ }
+ );
+
+ setup_event_handlers(
+ openid_submit_button,
+ function(){
+ signin_form.unbind(
+ 'submit'
+ ).submit(
+ submit_with_extra_openid_token
+ );
+ }
+ );
+ return false;
+ };
+
+ var start_facebook_login = function(){
+ set_provider_name($(this));
+ if (typeof FB != 'undefined'){
+ FB.getLoginStatus(function(response){
+ if (response.authResponse){
+ signin_form.submit();
+ }
+ else {
+ if (FB.getSession()){
+ signin_form.submit();
+ }
+ FB.login();
+ }
+ });
+ }
+ return false;
+ };
+
+ var start_password_login_or_change = function(){
+ //called upon clicking on one of the password login buttons
+ reset_form();
+ set_provider_name($(this));
+ var provider_name = $(this).attr('name');
+ return setup_password_login_or_change(provider_name);
+ };
+
+ var init_always_visible_password_login = function(){
+ reset_form();
+ //will break wordpress and ldap
+ provider_name_input.val('local');
+ setup_password_login_or_change('local');
+ };
+
+ var setup_password_login_or_change = function(provider_name){
+ var token_name = extra_token_name[provider_name]
+ var password_action_input = $('input[name=password_action]');
+ if (userIsAuthenticated === true){
+ var password_button = $('input[name=change_password]');
+ var submit_action = submit_change_password;
+ if (provider_name === 'local'){
+ var provider_cleaned_name = siteName;
+ }
+ else {
+ var provider_cleaned_name = provider_name;
+ }
+ if (existing_login_methods && existing_login_methods[provider_name]){
+ var password_heading_text = interpolate(gettext('Change your %s password'), [provider_cleaned_name])
+ var password_button_text = gettext('Change password')
+ }
+ else {
+ var password_heading_text = interpolate(gettext('Create a password for %s'), [provider_cleaned_name])
+ var password_button_text = gettext('Create password')
+ }
+ $('#password-heading').html(
+ password_heading_text
+ )
+ password_button.val(password_button_text);
+ password_action_input.val('change_password');
+ var focus_input = $('#id_new_password');
+ var submittable_input = $('#id_new_password_retyped');
+ }
+ else{
+ $('#password-heading>span').html(token_name);
+ var password_button = $('input[name=login_with_password]');
+ var submit_action = submit_login_with_password;
+ var create_pw_link = $('a.create-password-account')
+ if (create_pw_link.length > 0){
+ create_pw_link.html(gettext('Create a password-protected account'));
+ var url = create_pw_link.attr('href');
+ if (url.indexOf('?') !== -1){
+ url = url.replace(/\?.*$/,'?login_provider=' + provider_name);
+ }
+ else{
+ url += '?login_provider=' + provider_name;
+ }
+ create_pw_link.attr('href', url);
+ }
+ password_action_input.val('login');
+ var focus_input = $('#id_username');
+ var submittable_input = $('#id_password');
+ }
+ password_input_fields.show();
+ focus_input.focus();
+
+ var submit_password_login = function(){
+ signin_form.unbind('submit').submit(submit_action);
+ };
+
+ setup_enter_key_handler(
+ submittable_input,
+ function() {
+ password_button.click();
+ return false;
+ }
+ );
+ setup_event_handlers(password_button, submit_password_login);
+ return false;
+ };
+
+ var start_account_recovery = function(){
+ reset_form();
+ account_recovery_hint.hide();
+ account_recovery_heading.css('margin-bottom', '0px');
+ account_recovery_heading.html(account_recovery_prompt_text).show();
+ email_input_fields.show();
+ $('#id_email').focus();
+ };
+
+ var clear_password_fields = function(){
+ $('#id_password').val('');
+ $('#id_new_password').val('');
+ $('#id_new_password_retyped').val('');
+ };
+
+ var setup_default_handlers = function(){
+ setup_event_handlers(
+ signin_page.find('input.openid-direct'),
+ start_simple_login
+ );
+
+ setup_event_handlers(
+ signin_page.find('input.openid-username'),
+ start_login_with_extra_openid_token
+ );
+
+ setup_event_handlers(
+ signin_page.find('input.openid-generic'),
+ start_login_with_extra_openid_token
+ );
+
+ setup_event_handlers(
+ signin_page.find('input.facebook'),
+ start_facebook_login
+ );
+
+ setup_event_handlers(
+ signin_page.find('input.oauth'),
+ start_simple_login
+ );
+
+ setup_event_handlers(
+ signin_page.find('input.password'),
+ start_password_login_or_change
+ );
+ setup_event_handlers(
+ signin_page.find('input.wordpress_site'),
+ start_password_login_or_change
+ );
+
+ setup_event_handlers(account_recovery_link, start_account_recovery);
+
+ if (userIsAuthenticated){
+ read_existing_login_methods();
+ setup_login_method_deleters();
+ }
+ };
+
+ setup_default_handlers();
+ if (askbot['settings']['signin_always_show_local_login'] === true){
+ init_always_visible_password_login();
+ }
+ clear_password_fields();
+ return this;
+};
diff --git a/askbot/skins/common/media/jquery-openid/openid.css b/askbot/skins/common/media/jquery-openid/openid.css
new file mode 100644
index 00000000..e44e5478
--- /dev/null
+++ b/askbot/skins/common/media/jquery-openid/openid.css
@@ -0,0 +1,38 @@
+div#login-icons {margin:10px 0 0 0;padding:10px;border:#eee 1px solid;}
+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 h2#account-recovery-heading {margin-bottom:2px;}
+#account-recovery-form p.hint a {color:blue; text-decoration: underline;}
+.openid-signin fieldset { border-style:none;margin:0;padding:0;}
+.openid-signin p {margin:0;padding:0};
+.openid-signin p.hint {color: #555;}
+.openid-signin #password-fs label {width:100px;margin-top:5px;text-align:left;}
+.openid-signin #password-fs .hint {margin-bottom:5px}
+#password-fs a {padding-left:5px;}
+/*#signin-form #account-recovery-form input {cursor:pointer;}
+#signin-form #account-recovery-form input.text {cursor:default;}*/
+
+table.login { text-align: right;}
+
+.openid-signin .submit-b {
+ cursor: pointer; /*letter-spacing:1px;*/
+ margin: 0 0 2px 0;
+ vertical-align: middle;
+}
+
+.openid-signin .highlight { -moz-border-radius:4px; -webkit-border-radius:4px; background-color: #FD6}
+
+ul.providers {
+ display: block;
+}
+
+.openid-signin th {
+ color: #555;
+ font-weight: normal;
+}
+
+.openid-signin .ab-provider-name {
+ font-weight: bold;
+}
diff --git a/askbot/skins/default/media/js/autocompleter.js b/askbot/skins/common/media/js/autocompleter.js
index a7c54315..a7c54315 100644
--- a/askbot/skins/default/media/js/autocompleter.js
+++ b/askbot/skins/common/media/js/autocompleter.js
diff --git a/askbot/skins/default/media/js/compress.bat b/askbot/skins/common/media/js/compress.bat
index 53d72588..53d72588 100644
--- a/askbot/skins/default/media/js/compress.bat
+++ b/askbot/skins/common/media/js/compress.bat
diff --git a/askbot/skins/default/media/js/editor.js b/askbot/skins/common/media/js/editor.js
index f5b1e2af..f5b1e2af 100644
--- a/askbot/skins/default/media/js/editor.js
+++ b/askbot/skins/common/media/js/editor.js
diff --git a/askbot/skins/default/media/js/excanvas.min.js b/askbot/skins/common/media/js/excanvas.min.js
index 12c74f7b..12c74f7b 100644
--- a/askbot/skins/default/media/js/excanvas.min.js
+++ b/askbot/skins/common/media/js/excanvas.min.js
diff --git a/askbot/skins/default/media/js/flot-build.bat b/askbot/skins/common/media/js/flot-build.bat
index f9f32cb7..f9f32cb7 100644
--- a/askbot/skins/default/media/js/flot-build.bat
+++ b/askbot/skins/common/media/js/flot-build.bat
diff --git a/askbot/skins/default/media/js/i18n.js b/askbot/skins/common/media/js/i18n.js
index 192d335b..192d335b 100644
--- a/askbot/skins/default/media/js/i18n.js
+++ b/askbot/skins/common/media/js/i18n.js
diff --git a/askbot/skins/default/media/js/jquery-1.4.3.js b/askbot/skins/common/media/js/jquery-1.4.3.js
index ad9a79c4..ad9a79c4 100644
--- a/askbot/skins/default/media/js/jquery-1.4.3.js
+++ b/askbot/skins/common/media/js/jquery-1.4.3.js
diff --git a/askbot/skins/default/media/js/jquery-fieldselection.js b/askbot/skins/common/media/js/jquery-fieldselection.js
index 47f25a98..47f25a98 100644
--- a/askbot/skins/default/media/js/jquery-fieldselection.js
+++ b/askbot/skins/common/media/js/jquery-fieldselection.js
diff --git a/askbot/skins/default/media/js/jquery-fieldselection.min.js b/askbot/skins/common/media/js/jquery-fieldselection.min.js
index c2abde0b..c2abde0b 100644
--- a/askbot/skins/default/media/js/jquery-fieldselection.min.js
+++ b/askbot/skins/common/media/js/jquery-fieldselection.min.js
diff --git a/askbot/skins/default/media/js/jquery.ajaxfileupload.js b/askbot/skins/common/media/js/jquery.ajaxfileupload.js
index 75292776..75292776 100644
--- a/askbot/skins/default/media/js/jquery.ajaxfileupload.js
+++ b/askbot/skins/common/media/js/jquery.ajaxfileupload.js
diff --git a/askbot/skins/default/media/js/jquery.animate-colors.js b/askbot/skins/common/media/js/jquery.animate-colors.js
index 07d8ac9c..07d8ac9c 100644
--- a/askbot/skins/default/media/js/jquery.animate-colors.js
+++ b/askbot/skins/common/media/js/jquery.animate-colors.js
diff --git a/askbot/skins/default/media/js/jquery.flot.js b/askbot/skins/common/media/js/jquery.flot.js
index 6534a468..6534a468 100644
--- a/askbot/skins/default/media/js/jquery.flot.js
+++ b/askbot/skins/common/media/js/jquery.flot.js
diff --git a/askbot/skins/default/media/js/jquery.flot.min.js b/askbot/skins/common/media/js/jquery.flot.min.js
index 31f465b8..31f465b8 100644
--- a/askbot/skins/default/media/js/jquery.flot.min.js
+++ b/askbot/skins/common/media/js/jquery.flot.min.js
diff --git a/askbot/skins/default/media/js/jquery.form.js b/askbot/skins/common/media/js/jquery.form.js
index 443114fd..443114fd 100644
--- a/askbot/skins/default/media/js/jquery.form.js
+++ b/askbot/skins/common/media/js/jquery.form.js
diff --git a/askbot/skins/default/media/js/jquery.i18n.js b/askbot/skins/common/media/js/jquery.i18n.js
index 0a155a31..0a155a31 100644
--- a/askbot/skins/default/media/js/jquery.i18n.js
+++ b/askbot/skins/common/media/js/jquery.i18n.js
diff --git a/askbot/skins/default/media/js/jquery.openid.js b/askbot/skins/common/media/js/jquery.openid.js
index af7d8cb9..af7d8cb9 100644
--- a/askbot/skins/default/media/js/jquery.openid.js
+++ b/askbot/skins/common/media/js/jquery.openid.js
diff --git a/askbot/skins/default/media/js/jquery.validate.js b/askbot/skins/common/media/js/jquery.validate.js
index e402ea8c..e402ea8c 100644
--- a/askbot/skins/default/media/js/jquery.validate.js
+++ b/askbot/skins/common/media/js/jquery.validate.js
diff --git a/askbot/skins/default/media/js/jquery.validate.min.js b/askbot/skins/common/media/js/jquery.validate.min.js
index 6264866f..6264866f 100644
--- a/askbot/skins/default/media/js/jquery.validate.min.js
+++ b/askbot/skins/common/media/js/jquery.validate.min.js
diff --git a/askbot/skins/default/media/js/jquery.validate.pack.js b/askbot/skins/common/media/js/jquery.validate.pack.js
index 49134500..49134500 100644
--- a/askbot/skins/default/media/js/jquery.validate.pack.js
+++ b/askbot/skins/common/media/js/jquery.validate.pack.js
diff --git a/askbot/skins/common/media/js/less.min.js b/askbot/skins/common/media/js/less.min.js
new file mode 100644
index 00000000..6e4d5cff
--- /dev/null
+++ b/askbot/skins/common/media/js/less.min.js
@@ -0,0 +1,16 @@
+//
+// LESS - Leaner CSS v1.1.3
+// http://lesscss.org
+//
+// Copyright (c) 2009-2011, Alexis Sellier
+// Licensed under the Apache 2.0 License.
+//
+//
+// LESS - Leaner CSS v1.1.3
+// http://lesscss.org
+//
+// Copyright (c) 2009-2011, Alexis Sellier
+// Licensed under the Apache 2.0 License.
+//
+(function(a,b){function v(a,b){var c="less-error-message:"+p(b),e=["<ul>",'<li><label>[-1]</label><pre class="ctx">{0}</pre></li>',"<li><label>[0]</label><pre>{current}</pre></li>",'<li><label>[1]</label><pre class="ctx">{2}</pre></li>',"</ul>"].join("\n"),f=document.createElement("div"),g,h;f.id=c,f.className="less-error-message",h="<h3>"+(a.message||"There is an error in your .less file")+"</h3>"+'<p><a href="'+b+'">'+b+"</a> ",a.extract&&(h+="on line "+a.line+", column "+(a.column+1)+":</p>"+e.replace(/\[(-?\d)\]/g,function(b,c){return parseInt(a.line)+parseInt(c)||""}).replace(/\{(\d)\}/g,function(b,c){return a.extract[parseInt(c)]||""}).replace(/\{current\}/,a.extract[1].slice(0,a.column)+'<span class="error">'+a.extract[1].slice(a.column)+"</span>")),f.innerHTML=h,q([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #ee4444;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.ctx {","color: #dd4444;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),f.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),d.env=="development"&&(g=setInterval(function(){document.body&&(document.getElementById(c)?document.body.replaceChild(f,document.getElementById(c)):document.body.insertBefore(f,document.body.firstChild),clearInterval(g))},10))}function u(a){d.env=="development"&&typeof console!="undefined"&&console.log("less: "+a)}function t(a){return a&&a.parentNode.removeChild(a)}function s(){if(a.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(b){u("browser doesn't support AJAX.");return null}}function r(a,b,c,e){function i(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):typeof d=="function"&&d(b.status,a)}var f=s(),h=g?!1:d.async;typeof f.overrideMimeType=="function"&&f.overrideMimeType("text/css"),f.open("GET",a,h),f.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),g?f.status===0?c(f.responseText):e(f.status,a):h?f.onreadystatechange=function(){f.readyState==4&&i(f,c,e)}:i(f,c,e)}function q(a,b,c){var d,e=b.href?b.href.replace(/\?.*$/,""):"",f="less:"+(b.title||p(e));(d=document.getElementById(f))===null&&(d=document.createElement("style"),d.type="text/css",d.media=b.media||"screen",d.id=f,document.getElementsByTagName("head")[0].appendChild(d));if(d.styleSheet)try{d.styleSheet.cssText=a}catch(g){throw new Error("Couldn't reassign styleSheet.cssText.")}else(function(a){d.childNodes.length>0?d.firstChild.nodeValue!==a.nodeValue&&d.replaceChild(a,d.firstChild):d.appendChild(a)})(document.createTextNode(a));c&&h&&(u("saving "+e+" to cache."),h.setItem(e,a),h.setItem(e+":timestamp",c))}function p(a){return a.replace(/^[a-z]+:\/\/?[^\/]+/,"").replace(/^\//,"").replace(/\?.*$/,"").replace(/\.[^\.\/]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function o(b,c,e,f){var g=a.location.href.replace(/[#?].*$/,""),i=b.href.replace(/\?.*$/,""),j=h&&h.getItem(i),k=h&&h.getItem(i+":timestamp"),l={css:j,timestamp:k};/^(https?|file):/.test(i)||(i.charAt(0)=="/"?i=a.location.protocol+"//"+a.location.host+i:i=g.slice(0,g.lastIndexOf("/")+1)+i),r(b.href,b.type,function(a,g){if(!e&&l&&g&&(new Date(g)).valueOf()===(new Date(l.timestamp)).valueOf())q(l.css,b),c(null,b,{local:!0,remaining:f});else try{(new d.Parser({optimization:d.optimization,paths:[i.replace(/[\w\.-]+$/,"")],mime:b.type})).parse(a,function(a,d){if(a)return v(a,i);try{c(d,b,{local:!1,lastModified:g,remaining:f}),t(document.getElementById("less-error-message:"+p(i)))}catch(a){v(a,i)}})}catch(h){v(h,i)}},function(a,b){throw new Error("Couldn't load "+b+" ("+a+")")})}function n(a,b){for(var c=0;c<d.sheets.length;c++)o(d.sheets[c],a,b,d.sheets.length-(c+1))}function m(){var a=document.getElementsByTagName("style");for(var b=0;b<a.length;b++)a[b].type.match(k)&&(new d.Parser).parse(a[b].innerHTML||"",function(c,d){a[b].type="text/css",a[b].innerHTML=d.toCSS()})}function c(b){return a.less[b.split("/")[1]]}Array.isArray||(Array.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"||a instanceof Array}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c=this.length>>>0;for(var d=0;d<c;d++)d in this&&a.call(b,this[d],d,this)}),Array.prototype.map||(Array.prototype.map=function(a){var b=this.length>>>0,c=Array(b),d=arguments[1];for(var e=0;e<b;e++)e in this&&(c[e]=a.call(d,this[e],e,this));return c}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=[],c=arguments[1];for(var d=0;d<this.length;d++)a.call(c,this[d])&&b.push(this[d]);return b}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var b=this.length>>>0,c=0;if(b===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var d=arguments[1];else for(;;){if(c in this){d=this[c++];break}if(++c>=b)throw new TypeError}for(;c<b;c++)c in this&&(d=a.call(null,d,this[c],c,this));return d}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=arguments[1]||0;if(!b)return-1;if(c>=b)return-1;c<0&&(c+=b);for(;c<b;c++){if(!Object.prototype.hasOwnProperty.call(this,c))continue;if(a===this[c])return c}return-1}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b}),String.prototype.trim||(String.prototype.trim=function(){return String(this).replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var d,e;typeof a=="undefined"?(d=exports,e=c("less/tree")):(typeof a.less=="undefined"&&(a.less={}),d=a.less,e=a.less.tree={}),d.Parser=function(a){function t(a){return typeof a=="string"?b.charAt(c)===a:a.test(j[f])?!0:!1}function s(a){var d,e,g,h,i,m,n,o;if(a instanceof Function)return a.call(l.parsers);if(typeof a=="string")d=b.charAt(c)===a?a:null,g=1,r();else{r();if(d=a.exec(j[f]))g=d[0].length;else return null}if(d){o=c+=g,m=c+j[f].length-g;while(c<m){h=b.charCodeAt(c);if(h!==32&&h!==10&&h!==9)break;c++}j[f]=j[f].slice(g+(c-o)),k=c,j[f].length===0&&f<j.length-1&&f++;return typeof d=="string"?d:d.length===1?d[0]:d}}function r(){c>k&&(j[f]=j[f].slice(c-k),k=c)}function q(){j[f]=g,c=h,k=c}function p(){g=j[f],h=c,k=c}var b,c,f,g,h,i,j,k,l,m=this,n=function(){},o=this.imports={paths:a&&a.paths||[],queue:[],files:{},mime:a&&a.mime,push:function(b,c){var e=this;this.queue.push(b),d.Parser.importer(b,this.paths,function(a){e.queue.splice(e.queue.indexOf(b),1),e.files[b]=a,c(a),e.queue.length===0&&n()},a)}};this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,this.env.filename=this.env.filename||null;return l={imports:o,parse:function(d,g){var h,l,m,o,p,q,r=[],t,u=null;c=f=k=i=0,j=[],b=d.replace(/\r\n/g,"\n"),j=function(c){var d=0,e=/[^"'`\{\}\/\(\)]+/g,f=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,g=0,h,i=c[0],j,k;for(var l=0,m,n;l<b.length;l++){e.lastIndex=l,(h=e.exec(b))&&h.index===l&&(l+=h[0].length,i.push(h[0])),m=b.charAt(l),f.lastIndex=l,!k&&!j&&m==="/"&&(n=b.charAt(l+1),(n==="/"||n==="*")&&(h=f.exec(b))&&h.index===l&&(l+=h[0].length,i.push(h[0]),m=b.charAt(l)));if(m==="{"&&!k&&!j)g++,i.push(m);else if(m==="}"&&!k&&!j)g--,i.push(m),c[++d]=i=[];else if(m==="("&&!k&&!j)i.push(m),j=!0;else if(m===")"&&!k&&j)i.push(m),j=!1;else{if(m==='"'||m==="'"||m==="`")k?k=k===m?!1:k:k=m;i.push(m)}}if(g>0)throw{type:"Syntax",message:"Missing closing `}`",filename:a.filename};return c.map(function(a){return a.join("")})}([[]]),h=new e.Ruleset([],s(this.parsers.primary)),h.root=!0,h.toCSS=function(c){var d,f,g;return function(g,h){function n(a){return a?(b.slice(0,a).match(/\n/g)||"").length:null}var i=[];g=g||{},typeof h=="object"&&!Array.isArray(h)&&(h=Object.keys(h).map(function(a){var b=h[a];b instanceof e.Value||(b instanceof e.Expression||(b=new e.Expression([b])),b=new e.Value([b]));return new e.Rule("@"+a,b,!1,0)}),i=[new e.Ruleset(null,h)]);try{var j=c.call(this,{frames:i}).toCSS([],{compress:g.compress||!1})}catch(k){f=b.split("\n"),d=n(k.index);for(var l=k.index,m=-1;l>=0&&b.charAt(l)!=="\n";l--)m++;throw{type:k.type,message:k.message,filename:a.filename,index:k.index,line:typeof d=="number"?d+1:null,callLine:k.call&&n(k.call)+1,callExtract:f[n(k.call)],stack:k.stack,column:m,extract:[f[d-1],f[d],f[d+1]]}}return g.compress?j.replace(/(\s)+/g,"$1"):j}}(h.eval);if(c<b.length-1){c=i,q=b.split("\n"),p=(b.slice(0,c).match(/\n/g)||"").length+1;for(var v=c,w=-1;v>=0&&b.charAt(v)!=="\n";v--)w++;u={name:"ParseError",message:"Syntax Error on line "+p,index:c,filename:a.filename,line:p,column:w,extract:[q[p-2],q[p-1],q[p]]}}this.imports.queue.length>0?n=function(){g(u,h)}:g(u,h)},parsers:{primary:function(){var a,b=[];while((a=s(this.mixin.definition)||s(this.rule)||s(this.ruleset)||s(this.mixin.call)||s(this.comment)||s(this.directive))||s(/^[\s\n]+/))a&&b.push(a);return b},comment:function(){var a;if(b.charAt(c)==="/"){if(b.charAt(c+1)==="/")return new e.Comment(s(/^\/\/.*/),!0);if(a=s(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new e.Comment(a)}},entities:{quoted:function(){var a,d=c,f;b.charAt(d)==="~"&&(d++,f=!0);if(b.charAt(d)==='"'||b.charAt(d)==="'"){f&&s("~");if(a=s(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new e.Quoted(a[0],a[1]||a[2],f)}},keyword:function(){var a;if(a=s(/^[A-Za-z-]+/))return new e.Keyword(a)},call:function(){var a,b,d=c;if(!!(a=/^([\w-]+|%)\(/.exec(j[f]))){a=a[1].toLowerCase();if(a==="url")return null;c+=a.length;if(a==="alpha")return s(this.alpha);s("("),b=s(this.entities.arguments);if(!s(")"))return;if(a)return new e.Call(a,b,d)}},arguments:function(){var a=[],b;while(b=s(this.expression)){a.push(b);if(!s(","))break}return a},literal:function(){return s(this.entities.dimension)||s(this.entities.color)||s(this.entities.quoted)},url:function(){var a;if(b.charAt(c)==="u"&&!!s(/^url\(/)){a=s(this.entities.quoted)||s(this.entities.variable)||s(this.entities.dataURI)||s(/^[-\w%@$\/.&=:;#+?~]+/)||"";if(!s(")"))throw new Error("missing closing ) for url()");return new e.URL(a.value||a.data||a instanceof e.Variable?a:new e.Anonymous(a),o.paths)}},dataURI:function(){var a;if(s(/^data:/)){a={},a.mime=s(/^[^\/]+\/[^,;)]+/)||"",a.charset=s(/^;\s*charset=[^,;)]+/)||"",a.base64=s(/^;\s*base64/)||"",a.data=s(/^,\s*[^)]+/);if(a.data)return a}},variable:function(){var a,d=c;if(b.charAt(c)==="@"&&(a=s(/^@@?[\w-]+/)))return new e.Variable(a,d)},color:function(){var a;if(b.charAt(c)==="#"&&(a=s(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new e.Color(a[1])},dimension:function(){var a,d=b.charCodeAt(c);if(!(d>57||d<45||d===47))if(a=s(/^(-?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new e.Dimension(a[1],a[2])},javascript:function(){var a,d=c,f;b.charAt(d)==="~"&&(d++,f=!0);if(b.charAt(d)==="`"){f&&s("~");if(a=s(/^`([^`]*)`/))return new e.JavaScript(a[1],c,f)}}},variable:function(){var a;if(b.charAt(c)==="@"&&(a=s(/^(@[\w-]+)\s*:/)))return a[1]},shorthand:function(){var a,b;if(!!t(/^[@\w.%-]+\/[@\w.-]+/)&&(a=s(this.entity))&&s("/")&&(b=s(this.entity)))return new e.Shorthand(a,b)},mixin:{call:function(){var a=[],d,f,g,h=c,i=b.charAt(c);if(i==="."||i==="#"){while(d=s(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/))a.push(new e.Element(f,d)),f=s(">");s("(")&&(g=s(this.entities.arguments))&&s(")");if(a.length>0&&(s(";")||t("}")))return new e.mixin.Call(a,g,h)}},definition:function(){var a,d=[],f,g,h,i;if(!(b.charAt(c)!=="."&&b.charAt(c)!=="#"||t(/^[^{]*(;|})/)))if(f=s(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)){a=f[1];while(h=s(this.entities.variable)||s(this.entities.literal)||s(this.entities.keyword)){if(h instanceof e.Variable)if(s(":"))if(i=s(this.expression))d.push({name:h.name,value:i});else throw new Error("Expected value");else d.push({name:h.name});else d.push({value:h});if(!s(","))break}if(!s(")"))throw new Error("Expected )");g=s(this.block);if(g)return new e.mixin.Definition(a,d,g)}}},entity:function(){return s(this.entities.literal)||s(this.entities.variable)||s(this.entities.url)||s(this.entities.call)||s(this.entities.keyword)||s(this.entities.javascript)||s(this.comment)},end:function(){return s(";")||t("}")},alpha:function(){var a;if(!!s(/^\(opacity=/i))if(a=s(/^\d+/)||s(this.entities.variable)){if(!s(")"))throw new Error("missing closing ) for alpha()");return new e.Alpha(a)}},element:function(){var a,b,c;c=s(this.combinator),a=s(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)||s("*")||s(this.attribute)||s(/^\([^)@]+\)/);if(a)return new e.Element(c,a)},combinator:function(){var a,d=b.charAt(c);if(d===">"||d==="&"||d==="+"||d==="~"){c++;while(b.charAt(c)===" ")c++;return new e.Combinator(d)}if(d===":"&&b.charAt(c+1)===":"){c+=2;while(b.charAt(c)===" ")c++;return new e.Combinator("::")}return b.charAt(c-1)===" "?new e.Combinator(" "):new e.Combinator(null)},selector:function(){var a,d,f=[],g,h;while(d=s(this.element)){g=b.charAt(c),f.push(d);if(g==="{"||g==="}"||g===";"||g===",")break}if(f.length>0)return new e.Selector(f)},tag:function(){return s(/^[a-zA-Z][a-zA-Z-]*[0-9]?/)||s("*")},attribute:function(){var a="",b,c,d;if(!!s("[")){if(b=s(/^[a-zA-Z-]+/)||s(this.entities.quoted))(d=s(/^[|~*$^]?=/))&&(c=s(this.entities.quoted)||s(/^[\w-]+/))?a=[b,d,c.toCSS?c.toCSS():c].join(""):a=b;if(!s("]"))return;if(a)return"["+a+"]"}},block:function(){var a;if(s("{")&&(a=s(this.primary))&&s("}"))return a},ruleset:function(){var a=[],b,d,g;p();if(g=/^([.#: \w-]+)[\s\n]*\{/.exec(j[f]))c+=g[0].length-1,a=[new e.Selector([new e.Element(null,g[1])])];else while(b=s(this.selector)){a.push(b),s(this.comment);if(!s(","))break;s(this.comment)}if(a.length>0&&(d=s(this.block)))return new e.Ruleset(a,d);i=c,q()},rule:function(){var a,d,g=b.charAt(c),k,l;p();if(g!=="."&&g!=="#"&&g!=="&")if(a=s(this.variable)||s(this.property)){a.charAt(0)!="@"&&(l=/^([^@+\/'"*`(;{}-]*);/.exec(j[f]))?(c+=l[0].length-1,d=new e.Anonymous(l[1])):a==="font"?d=s(this.font):d=s(this.value),k=s(this.important);if(d&&s(this.end))return new e.Rule(a,d,k,h);i=c,q()}},"import":function(){var a;if(s(/^@import\s+/)&&(a=s(this.entities.quoted)||s(this.entities.url))&&s(";"))return new e.Import(a,o)},directive:function(){var a,d,f,g;if(b.charAt(c)==="@"){if(d=s(this["import"]))return d;if(a=s(/^@media|@page|@-[-a-z]+/)){g=(s(/^[^{]+/)||"").trim();if(f=s(this.block))return new e.Directive(a+" "+g,f)}else if(a=s(/^@[-a-z]+/))if(a==="@font-face"){if(f=s(this.block))return new e.Directive(a,f)}else if((d=s(this.entity))&&s(";"))return new e.Directive(a,d)}},font:function(){var a=[],b=[],c,d,f,g;while(g=s(this.shorthand)||s(this.entity))b.push(g);a.push(new e.Expression(b));if(s(","))while(g=s(this.expression)){a.push(g);if(!s(","))break}return new e.Value(a)},value:function(){var a,b=[],c;while(a=s(this.expression)){b.push(a);if(!s(","))break}if(b.length>0)return new e.Value(b)},important:function(){if(b.charAt(c)==="!")return s(/^! *important/)},sub:function(){var a;if(s("(")&&(a=s(this.expression))&&s(")"))return a},multiplication:function(){var a,b,c,d;if(a=s(this.operand)){while((c=s("/")||s("*"))&&(b=s(this.operand)))d=new e.Operation(c,[d||a,b]);return d||a}},addition:function(){var a,d,f,g;if(a=s(this.multiplication)){while((f=s(/^[-+]\s+/)||b.charAt(c-1)!=" "&&(s("+")||s("-")))&&(d=s(this.multiplication)))g=new e.Operation(f,[g||a,d]);return g||a}},operand:function(){var a,d=b.charAt(c+1);b.charAt(c)==="-"&&(d==="@"||d==="(")&&(a=s("-"));var f=s(this.sub)||s(this.entities.dimension)||s(this.entities.color)||s(this.entities.variable)||s(this.entities.call);return a?new e.Operation("*",[new e.Dimension(-1),f]):f},expression:function(){var a,b,c=[],d;while(a=s(this.addition)||s(this.entity))c.push(a);if(c.length>0)return new e.Expression(c)},property:function(){var a;if(a=s(/^(\*?-?[-a-z_0-9]+)\s*:/))return a[1]}}}},typeof a!="undefined"&&(d.Parser.importer=function(a,b,c,d){a.charAt(0)!=="/"&&b.length>0&&(a=b[0]+a),o({href:a,title:a,type:d.mime},c,!0)}),function(a){function d(a){return Math.min(1,Math.max(0,a))}function c(b){if(b instanceof a.Dimension)return parseFloat(b.unit=="%"?b.value/100:b.value);if(typeof b=="number")return b;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function b(b){return a.functions.hsla(b.h,b.s,b.l,b.a)}a.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(b,d,e,f){var g=[b,d,e].map(function(a){return c(a)}),f=c(f);return new a.Color(g,f)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,d,e){function h(a){a=a<0?a+1:a>1?a-1:a;return a*6<1?g+(f-g)*a*6:a*2<1?f:a*3<2?g+(f-g)*(2/3-a)*6:g}a=c(a)%360/360,b=c(b),d=c(d),e=c(e);var f=d<=.5?d*(b+1):d+b-d*b,g=d*2-f;return this.rgba(h(a+1/3)*255,h(a)*255,h(a-1/3)*255,e)},hue:function(b){return new a.Dimension(Math.round(b.toHSL().h))},saturation:function(b){return new a.Dimension(Math.round(b.toHSL().s*100),"%")},lightness:function(b){return new a.Dimension(Math.round(b.toHSL().l*100),"%")},alpha:function(b){return new a.Dimension(b.toHSL().a)},saturate:function(a,c){var e=a.toHSL();e.s+=c.value/100,e.s=d(e.s);return b(e)},desaturate:function(a,c){var e=a.toHSL();e.s-=c.value/100,e.s=d(e.s);return b(e)},lighten:function(a,c){var e=a.toHSL();e.l+=c.value/100,e.l=d(e.l);return b(e)},darken:function(a,c){var e=a.toHSL();e.l-=c.value/100,e.l=d(e.l);return b(e)},fadein:function(a,c){var e=a.toHSL();e.a+=c.value/100,e.a=d(e.a);return b(e)},fadeout:function(a,c){var e=a.toHSL();e.a-=c.value/100,e.a=d(e.a);return b(e)},spin:function(a,c){var d=a.toHSL(),e=(d.h+c.value)%360;d.h=e<0?360+e:e;return b(d)},mix:function(b,c,d){var e=d.value/100,f=e*2-1,g=b.toHSL().a-c.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[b.rgb[0]*h+c.rgb[0]*i,b.rgb[1]*h+c.rgb[1]*i,b.rgb[2]*h+c.rgb[2]*i],k=b.alpha*e+c.alpha*(1-e);return new a.Color(j,k)},greyscale:function(b){return this.desaturate(b,new a.Dimension(100))},e:function(b){return new a.Anonymous(b instanceof a.JavaScript?b.evaluated:b)},escape:function(b){return new a.Anonymous(encodeURI(b.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},"%":function(b){var c=Array.prototype.slice.call(arguments,1),d=b.value;for(var e=0;e<c.length;e++)d=d.replace(/%[sda]/i,function(a){var b=a.match(/s/i)?c[e].value:c[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(b):b});d=d.replace(/%%/g,"%");return new a.Quoted('"'+d+'"',d)},round:function(b){if(b instanceof a.Dimension)return new a.Dimension(Math.round(c(b)),b.unit);if(typeof b=="number")return Math.round(b);throw{error:"RuntimeError",message:"math functions take numbers as parameters"}}}}(c("less/tree")),function(a){a.Alpha=function(a){this.value=a},a.Alpha.prototype={toCSS:function(){return"alpha(opacity="+(this.value.toCSS?this.value.toCSS():this.value)+")"},eval:function(a){this.value.eval&&(this.value=this.value.eval(a));return this}}}(c("less/tree")),function(a){a.Anonymous=function(a){this.value=a.value||a},a.Anonymous.prototype={toCSS:function(){return this.value},eval:function(){return this}}}(c("less/tree")),function(a){a.Call=function(a,b,c){this.name=a,this.args=b,this.index=c},a.Call.prototype={eval:function(b){var c=this.args.map(function(a){return a.eval(b)});if(!(this.name in a.functions))return new a.Anonymous(this.name+"("+c.map(function(a){return a.toCSS()}).join(", ")+")");try{return a.functions[this.name].apply(a.functions,c)}catch(d){throw{message:"error evaluating function `"+this.name+"`",index:this.index}}},toCSS:function(a){return this.eval(a).toCSS()}}}(c("less/tree")),function(a){a.Color=function(a,b){Array.isArray(a)?this.rgb=a:a.length==6?this.rgb=a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):a.length==8?(this.alpha=parseInt(a.substring(0,2),16)/255,this.rgb=a.substr(2).match(/.{2}/g).map(function(a){return parseInt(a,16)})):this.rgb=a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha=typeof b=="number"?b:1},a.Color.prototype={eval:function(){return this},toCSS:function(){return this.alpha<1?"rgba("+this.rgb.map(function(a){return Math.round(a)}).concat(this.alpha).join(", ")+")":"#"+this.rgb.map(function(a){a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16);return a.length===1?"0"+a:a}).join("")},operate:function(b,c){var d=[];c instanceof a.Color||(c=c.toColor());for(var e=0;e<3;e++)d[e]=a.operate(b,this.rgb[e],c.rgb[e]);return new a.Color(d,this.alpha+c.alpha)},toHSL:function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255,d=this.alpha,e=Math.max(a,b,c),f=Math.min(a,b,c),g,h,i=(e+f)/2,j=e-f;if(e===f)g=h=0;else{h=i>.5?j/(2-e-f):j/(e+f);switch(e){case a:g=(b-c)/j+(b<c?6:0);break;case b:g=(c-a)/j+2;break;case c:g=(a-b)/j+4}g/=6}return{h:g*360,s:h,l:i,a:d}}}}(c("less/tree")),function(a){a.Comment=function(a,b){this.value=a,this.silent=!!b},a.Comment.prototype={toCSS:function(a){return a.compress?"":this.value},eval:function(){return this}}}(c("less/tree")),function(a){a.Dimension=function(a,b){this.value=parseFloat(a),this.unit=b||null},a.Dimension.prototype={eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},toCSS:function(){var a=this.value+this.unit;return a},operate:function(b,c){return new a.Dimension(a.operate(b,this.value,c.value),this.unit||c.unit)}}}(c("less/tree")),function(a){a.Directive=function(b,c){this.name=b,Array.isArray(c)?this.ruleset=new a.Ruleset([],c):this.value=c},a.Directive.prototype={toCSS:function(a,b){if(this.ruleset){this.ruleset.root=!0;return this.name+(b.compress?"{":" {\n ")+this.ruleset.toCSS(a,b).trim().replace(/\n/g,"\n ")+(b.compress?"}":"\n}\n")}return this.name+" "+this.value.toCSS()+";\n"},eval:function(a){a.frames.unshift(this),this.ruleset=this.ruleset&&this.ruleset.eval(a),a.frames.shift();return this},variable:function(b){return a.Ruleset.prototype.variable.call(this.ruleset,b)},find:function(){return a.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.ruleset)}}}(c("less/tree")),function(a){a.Element=function(b,c){this.combinator=b instanceof a.Combinator?b:new a.Combinator(b),this.value=c.trim()},a.Element.prototype.toCSS=function(a){return this.combinator.toCSS(a||{})+this.value},a.Combinator=function(a){a===" "?this.value=" ":this.value=a?a.trim():""},a.Combinator.prototype.toCSS=function(a){return{"":""," ":" ","&":"",":":" :","::":"::","+":a.compress?"+":" + ","~":a.compress?"~":" ~ ",">":a.compress?">":" > "}[this.value]}}(c("less/tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={eval:function(b){return this.value.length>1?new a.Expression(this.value.map(function(a){return a.eval(b)})):this.value.length===1?this.value[0].eval(b):this},toCSS:function(a){return this.value.map(function(b){return b.toCSS(a)}).join(" ")}}}(c("less/tree")),function(a){a.Import=function(b,c){var d=this;this._path=b,b instanceof a.Quoted?this.path=/\.(le?|c)ss$/.test(b.value)?b.value:b.value+".less":this.path=b.value.value||b.value,this.css=/css$/.test(this.path),this.css||c.push(this.path,function(a){if(!a)throw new Error("Error parsing "+d.path);d.root=a})},a.Import.prototype={toCSS:function(){return this.css?"@import "+this._path.toCSS()+";\n":""},eval:function(b){var c;if(this.css)return this;c=new a.Ruleset(null,this.root.rules.slice(0));for(var d=0;d<c.rules.length;d++)c.rules[d]instanceof a.Import&&Array.prototype.splice.apply(c.rules,[d,1].concat(c.rules[d].eval(b)));return c.rules}}}(c("less/tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify((new a.Variable("@"+e,d.index)).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: `"+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return typeof c=="string"?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(c("less/tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value}}}(c("less/tree")),function(a){a.mixin={},a.mixin.Call=function(b,c,d){this.selector=new a.Selector(b),this.arguments=c,this.index=d},a.mixin.Call.prototype={eval:function(a){var b,c,d=[],e=!1;for(var f=0;f<a.frames.length;f++)if((b=a.frames[f].find(this.selector)).length>0){c=this.arguments&&this.arguments.map(function(b){return b.eval(a)});for(var g=0;g<b.length;g++)if(b[g].match(c,a))try{Array.prototype.push.apply(d,b[g].eval(a,this.arguments).rules),e=!0}catch(h){throw{message:h.message,index:h.index,stack:h.stack,call:this.index}}if(e)return d;throw{message:"No matching definition was found for `"+this.selector.toCSS().trim()+"("+this.arguments.map(function(a){return a.toCSS()}).join(", ")+")`",index:this.index}}throw{message:this.selector.toCSS().trim()+" is undefined",index:this.index}}},a.mixin.Definition=function(b,c,d){this.name=b,this.selectors=[new a.Selector([new a.Element(null,b)])],this.params=c,this.arity=c.length,this.rules=d,this._lookups={},this.required=c.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:a},0),this.parent=a.Ruleset.prototype,this.frames=[]},a.mixin.Definition.prototype={toCSS:function(){return""},variable:function(a){return this.parent.variable.call(this,a)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},eval:function(b,c){var d=new a.Ruleset(null,[]),e,f=[];for(var g=0,h;g<this.params.length;g++)if(this.params[g].name)if(h=c&&c[g]||this.params[g].value)d.rules.unshift(new a.Rule(this.params[g].name,h.eval(b)));else throw{message:"wrong number of arguments for "+this.name+" ("+c.length+" for "+this.arity+")"};for(var g=0;g<Math.max(this.params.length,c&&c.length);g++)f.push(c[g]||this.params[g].value);d.rules.unshift(new a.Rule("@arguments",(new a.Expression(f)).eval(b)));return(new a.Ruleset(null,this.rules.slice(0))).eval({frames:[this,d].concat(this.frames,b.frames)})},match:function(a,b){var c=a&&a.length||0,d;if(c<this.required)return!1;if(this.required>0&&c>this.params.length)return!1;d=Math.min(c,this.arity);for(var e=0;e<d;e++)if(!this.params[e].name&&a[e].eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(c("less/tree")),function(a){a.Operation=function(a,b){this.op=a.trim(),this.operands=b},a.Operation.prototype.eval=function(b){var c=this.operands[0].eval(b),d=this.operands[1].eval(b),e;if(c instanceof a.Dimension&&d instanceof a.Color)if(this.op==="*"||this.op==="+")e=d,d=c,c=e;else throw{name:"OperationError",message:"Can't substract or divide a color from a number"};return c.operate(this.op,d)},a.operate=function(a,b,c){switch(a){case"+":return b+c;case"-":return b-c;case"*":return b*c;case"/":return b/c}}}(c("less/tree")),function(a){a.Quoted=function(a,b,c,d){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d},a.Quoted.prototype={toCSS:function(){return this.escaped?this.value:this.quote+this.value+this.quote},eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return(new a.JavaScript(e,c.index,!0)).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=(new a.Variable("@"+e,c.index)).eval(b);return f.value||f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index)}}}(c("less/tree")),function(a){a.Rule=function(b,c,d,e){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.index=e,b.charAt(0)==="@"?this.variable=!0:this.variable=!1},a.Rule.prototype.toCSS=function(a){return this.variable?"":this.name+(a.compress?":":": ")+this.value.toCSS(a)+this.important+";"},a.Rule.prototype.eval=function(b){return new a.Rule(this.name,this.value.eval(b),this.important,this.index)},a.Shorthand=function(a,b){this.a=a,this.b=b},a.Shorthand.prototype={toCSS:function(a){return this.a.toCSS(a)+"/"+this.b.toCSS(a)},eval:function(){return this}}}(c("less/tree")),function(a){a.Ruleset=function(a,b){this.selectors=a,this.rules=b,this._lookups={}},a.Ruleset.prototype={eval:function(b){var c=new a.Ruleset(this.selectors,this.rules.slice(0));c.root=this.root,b.frames.unshift(c);if(c.root)for(var d=0;d<c.rules.length;d++)c.rules[d]instanceof a.Import&&Array.prototype.splice.apply(c.rules,[d,1].concat(c.rules[d].eval(b)));for(var d=0;d<c.rules.length;d++)c.rules[d]instanceof a.mixin.Definition&&(c.rules[d].frames=b.frames.slice(0));for(var d=0;d<c.rules.length;d++)c.rules[d]instanceof a.mixin.Call&&Array.prototype.splice.apply(c.rules,[d,1].concat(c.rules[d].eval(b)));for(var d=0,e;d<c.rules.length;d++)e=c.rules[d],e instanceof a.mixin.Definition||(c.rules[d]=e.eval?e.eval(b):e);b.frames.shift();return c},match:function(a){return!a||a.length===0},variables:function(){return this._variables?this._variables:this._variables=this.rules.reduce(function(b,c){c instanceof a.Rule&&c.variable===!0&&(b[c.name]=c);return b},{})},variable:function(a){return this.variables()[a]},rulesets:function(){return this._rulesets?this._rulesets:this._rulesets=this.rules.filter(function(b){return b instanceof a.Ruleset||b instanceof a.mixin.Definition})},find:function(b,c){c=c||this;var d=[],e,f,g=b.toCSS();if(g in this._lookups)return this._lookups[g];this.rulesets().forEach(function(e){if(e!==c)for(var g=0;g<e.selectors.length;g++)if(f=b.match(e.selectors[g])){b.elements.length>1?Array.prototype.push.apply(d,e.find(new a.Selector(b.elements.slice(1)),c)):d.push(e);break}});return this._lookups[g]=d},toCSS:function(b,c){var d=[],e=[],f=[],g=[],h,i;if(!this.root)if(b.length===0)g=this.selectors.map(function(a){return[a]});else for(var j=0;j<this.selectors.length;j++)for(var k=0;k<b.length;k++)g.push(b[k].concat([this.selectors[j]]));for(var l=0;l<this.rules.length;l++)i=this.rules[l],i.rules||i instanceof a.Directive?f.push(i.toCSS(g,c)):i instanceof a.Comment?i.silent||(this.root?f.push(i.toCSS(c)):e.push(i.toCSS(c))):i.toCSS&&!i.variable?e.push(i.toCSS(c)):i.value&&!i.variable&&e.push(i.value.toString());f=f.join(""),this.root?d.push(e.join(c.compress?"":"\n")):e.length>0&&(h=g.map(function(a){return a.map(function(a){return a.toCSS(c)}).join("").trim()}).join(c.compress?",":g.length>3?",\n":", "),d.push(h,(c.compress?"{":" {\n ")+e.join(c.compress?"":"\n ")+(c.compress?"}":"\n}\n"))),d.push(f);return d.join("")+(c.compress?"\n":"")}}}(c("less/tree")),function(a){a.Selector=function(a){this.elements=a,this.elements[0].combinator.value===""&&(this.elements[0].combinator.value=" ")},a.Selector.prototype.match=function(a){return this.elements[0].value===a.elements[0].value?!0:!1},a.Selector.prototype.toCSS=function(a){if(this._css)return this._css;return this._css=this.elements.map(function(b){return typeof b=="string"?" "+b.trim():b.toCSS(a)}).join("")}}(c("less/tree")),function(b){b.URL=function(b,c){b.data?this.attrs=b:(!/^(?:https?:\/|file:\/|data:\/)?\//.test(b.value)&&c.length>0&&typeof a!="undefined"&&(b.value=c[0]+(b.value.charAt(0)==="/"?b.value.slice(1):b.value)),this.value=b,this.paths=c)},b.URL.prototype={toCSS:function(){return"url("+(this.attrs?"data:"+this.attrs.mime+this.attrs.charset+this.attrs.base64+this.attrs.data:this.value.toCSS())+")"},eval:function(a){return this.attrs?this:new b.URL(this.value.eval(a),this.paths)}}}(c("less/tree")),function(a){a.Value=function(a){this.value=a,this.is="value"},a.Value.prototype={eval:function(b){return this.value.length===1?this.value[0].eval(b):new a.Value(this.value.map(function(a){return a.eval(b)}))},toCSS:function(a){return this.value.map(function(b){return b.toCSS(a)}).join(a.compress?",":", ")}}}(c("less/tree")),function(a){a.Variable=function(a,b){this.name=a,this
+.index=b},a.Variable.prototype={eval:function(b){var c,d,e=this.name;e.indexOf("@@")==0&&(e="@"+(new a.Variable(e.slice(1))).eval(b).value);if(c=a.find(b.frames,function(a){if(d=a.variable(e))return d.value.eval(b)}))return c;throw{message:"variable "+e+" is undefined",index:this.index}}}}(c("less/tree")),c("less/tree").find=function(a,b){for(var c=0,d;c<a.length;c++)if(d=b.call(a,a[c]))return d;return null},c("less/tree").jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)};var g=location.protocol==="file:"||location.protocol==="chrome:"||location.protocol==="chrome-extension:"||location.protocol==="resource:";d.env=d.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.port.length>0||g?"development":"production"),d.async=!1,d.poll=d.poll||(g?1e3:1500),d.watch=function(){return this.watchMode=!0},d.unwatch=function(){return this.watchMode=!1},d.env==="development"?(d.optimization=0,/!watch/.test(location.hash)&&d.watch(),d.watchTimer=setInterval(function(){d.watchMode&&n(function(a,b,c){a&&q(a.toCSS(),b,c.lastModified)})},d.poll)):d.optimization=3;var h;try{h=typeof a.localStorage=="undefined"?null:a.localStorage}catch(i){h=null}var j=document.getElementsByTagName("link"),k=/^text\/(x-)?less$/;d.sheets=[];for(var l=0;l<j.length;l++)(j[l].rel==="stylesheet/less"||j[l].rel.match(/stylesheet/)&&j[l].type.match(k))&&d.sheets.push(j[l]);d.refresh=function(a){var b,c;b=c=new Date,n(function(a,d,e){e.local?u("loading "+d.href+" from cache."):(u("parsed "+d.href+" successfully."),q(a.toCSS(),d,e.lastModified)),u("css for "+d.href+" generated in "+(new Date-c)+"ms"),e.remaining===0&&u("css generated in "+(new Date-b)+"ms"),c=new Date},a),m()},d.refreshStyles=m,d.refresh(d.env==="development")})(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
new file mode 100644
index 00000000..73e1453a
--- /dev/null
+++ b/askbot/skins/common/media/js/live_search.js
@@ -0,0 +1,523 @@
+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 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');
+ }
+ };
+
+ 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';
+ }
+ };
+
+ 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();
+ }
+ }
+ };
+
+ 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 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 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;';
+ }
+ output += '</span>' +
+ '<div>' + word + '</div>' +
+ '</div>';
+ return output;
+ };
+
+ 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_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> ';
+ }
+ }
+ else {
+ return '';
+ }
+ };
+
+ 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 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');
+ }
+ 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 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) +
+ }
+ user_html += '</div>';
+ return user_html;
+ };
+
+ 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 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){
+ if (tags.length === 0){
+ return;
+ }
+ var html = '';
+ 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 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 search_tags = $('#searchTags');
+ search_tags.children().remove();
+ 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.setDeleteHandler(
+ function(){
+ remove_search_tag(tag_name);
+ }
+ );
+ search_tags.append(tag.getElement());
+ });
+ }
+ };
+
+ var create_relevance_tab = function(){
+ relevance_tab = $('<a></a>');
+ relevance_tab.attr('href', '?sort=relevance-desc');
+ relevance_tab.attr('id', 'by_relevance');
+ relevance_tab.html('<span>' + sortButtonData['relevance']['label'] + '</span>');
+ return relevance_tab;
+ }
+
+ var set_active_sort_tab = function(sort_method){
+ 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']);
+ }
+ });
+ var bits = sort_method.split('-', 2);
+ var name = bits[0];
+ var sense = bits[1];//sense of sort
+ var antisense = (sense == 'asc' ? 'desc':'asc');
+ var arrow = (sense == 'asc' ? ' &#9650;':' &#9660;');
+ var active_tab = $('#by_' + name);
+ active_tab.attr('class', 'on');
+ active_tab.attr('title', sortButtonData[name][antisense + '_tooltip']);
+ active_tab.html(sortButtonData[name]['label'] + arrow);
+ };
+
+ var render_relevance_sort_tab = function(){
+ 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();
+ $('#sort_tabs>span').after(relevance_tab);
+ }
+ }
+ else {
+ if (relevance_tab.length > 0){
+ relevance_tab.remove();
+ }
+ }
+ };
+
+ 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_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);
+ });
+ 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);
+ query.focus();
+
+ //show new div with a fadeIn effect
+ old_list.fadeOut(200, function() {
+ 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;
+ }
+
+ 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 = '';
+ }
+
+ var refresh_main_page = function(){
+ $.ajax({
+ url: askbot['urls']['questions'],
+ data: {preserve_state: true},
+ dataType: 'json',
+ success: render_main_page_result
+ });
+ };
+
+ 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;
+ }
+ };
+
+};
diff --git a/askbot/skins/default/media/js/output-words.html b/askbot/skins/common/media/js/output-words.html
index 8ea5f314..8ea5f314 100644
--- a/askbot/skins/default/media/js/output-words.html
+++ b/askbot/skins/common/media/js/output-words.html
diff --git a/askbot/skins/default/media/js/output-words.js b/askbot/skins/common/media/js/output-words.js
index 41e25651..41e25651 100644
--- a/askbot/skins/default/media/js/output-words.js
+++ b/askbot/skins/common/media/js/output-words.js
diff --git a/askbot/skins/common/media/js/post.js b/askbot/skins/common/media/js/post.js
new file mode 100644
index 00000000..5dc49080
--- /dev/null
+++ b/askbot/skins/common/media/js/post.js
@@ -0,0 +1,1672 @@
+/*
+Scripts for cnprog.com
+Project Name: Lanai
+All Rights Resevred 2008. CNPROG.COM
+*/
+var lanai =
+{
+ /**
+ * Finds any <pre><code></code></pre> tags which aren't registered for
+ * pretty printing, adds the appropriate class name and invokes prettify.
+ */
+ highlightSyntax: function(){
+ var styled = false;
+ $("pre code").parent().each(function(){
+ if (!$(this).hasClass('prettyprint')){
+ $(this).addClass('prettyprint');
+ styled = true;
+ }
+ });
+
+ if (styled){
+ prettyPrint();
+ }
+ }
+};
+
+function appendLoader(element) {
+ loading = gettext('loading...')
+ element.append('<img class="ajax-loader" ' +
+ 'src="' + mediaUrl("media/images/indicator.gif") + '" title="' +
+ loading +
+ '" alt="' +
+ loading +
+ '" />');
+}
+
+function removeLoader() {
+ $("img.ajax-loader").remove();
+}
+
+function setSubmitButtonDisabled(form, isDisabled) {
+ form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : "");
+}
+
+function enableSubmitButton(form) {
+ setSubmitButtonDisabled(form, false);
+}
+
+function disableSubmitButton(form) {
+ setSubmitButtonDisabled(form, true);
+}
+
+function setupFormValidation(form, validationRules, validationMessages, onSubmitCallback) {
+ enableSubmitButton(form);
+ form.validate({
+ debug: true,
+ rules: (validationRules ? validationRules : {}),
+ messages: (validationMessages ? validationMessages : {}),
+ errorElement: "span",
+ errorClass: "form-error",
+ errorPlacement: function(error, element) {
+ var span = element.next().find("span.form-error");
+ if (span.length === 0) {
+ span = element.parent().find("span.form-error");
+ if (span.length === 0){
+ //for resizable textarea
+ var element_id = element.attr('id');
+ span = $("label[for='" + element_id + "']");
+ }
+ }
+ span.replaceWith(error);
+ },
+ submitHandler: function(form_dom) {
+ disableSubmitButton($(form_dom));
+
+ if (onSubmitCallback){
+ onSubmitCallback();
+ }
+ else{
+ form_dom.submit();
+ }
+ }
+ });
+}
+
+var validateTagLength = function(value){
+ var tags = getUniqueWords(value);
+ var are_tags_ok = true;
+ $.each(tags, function(index, value){
+ if (value.length > askbot['settings']['maxTagLength']){
+ are_tags_ok = false;
+ }
+ });
+ return are_tags_ok;
+};
+var validateTagCount = function(value){
+ var tags = getUniqueWords(value);
+ return (tags.length <= askbot['settings']['maxTagsPerPost']);
+};
+
+$.validator.addMethod('limit_tag_count', validateTagCount);
+$.validator.addMethod('limit_tag_length', validateTagLength);
+
+var CPValidator = function(){
+ return {
+ getQuestionFormRules : function(){
+ return {
+ tags: {
+ required: true,
+ maxlength: 105,
+ limit_tag_count: true,
+ limit_tag_length: true
+ },
+ text: {
+ required: true,
+ minlength: 10
+ }
+ /*title: {
+ required: true,
+ minlength: 10
+ }*/
+ };
+ },
+ getQuestionFormMessages: function(){
+ var chars = 10
+ return {
+ tags: {
+ required: " " + gettext('tags cannot be empty'),
+ maxlength: askbot['messages']['tagLimits'],
+ limit_tag_count: askbot['messages']['maxTagsPerPost'],
+ limit_tag_length: askbot['messages']['maxTagLength']
+ },
+ text: {
+ required: " " + gettext('content cannot be empty'),
+ minlength: interpolate(gettext('%s content minchars'), [chars])
+ },
+ title: {
+ required: " " + gettext('please enter title'),
+ minlength: interpolate(gettext('%s title minchars'), [chars])
+ }
+ };
+ }
+ };
+}();
+
+/**
+ * @constructor
+ * @extends {SimpleControl}
+ * @param {Comment} comment to upvote
+ */
+var CommentVoteButton = function(comment){
+ SimpleControl.call(this);
+ /**
+ * @param {Comment}
+ */
+ this._comment = comment;
+ /**
+ * @type {boolean}
+ */
+ this._voted = false;
+ /**
+ * @type {number}
+ */
+ this._score = 0;
+};
+inherits(CommentVoteButton, SimpleControl);
+/**
+ * @param {number} score
+ */
+CommentVoteButton.prototype.setScore = function(score){
+ this._score = score;
+ if (this._element){
+ this._element.html(score);
+ }
+};
+/**
+ * @param {boolean} voted
+ */
+CommentVoteButton.prototype.setVoted = function(voted){
+ this._voted = voted;
+ if (this._element){
+ this._element.addClass('upvoted');
+ }
+};
+
+CommentVoteButton.prototype.getVoteHandler = function(){
+ var me = this;
+ var comment = this._comment;
+ return function(){
+ var voted = me._voted;
+ var post_id = me._comment.getId();
+ var data = {
+ cancel_vote: voted ? true:false,
+ post_id: post_id
+ };
+ $.ajax({
+ type: 'POST',
+ data: data,
+ dataType: 'json',
+ url: askbot['urls']['upvote_comment'],
+ cache: false,
+ success: function(data){
+ if (data['success'] == true){
+ me.setScore(data['score']);
+ me.setVoted(true);
+ } else {
+ showMessage(comment.getElement(), data['message'], 'after');
+ }
+ }
+ });
+ };
+};
+
+CommentVoteButton.prototype.decorate = function(element){
+ this._element = element;
+ this.setHandler(this.getVoteHandler());
+
+ var element = this._element;
+ var comment = this._comment;
+ /* can't call comment.getElement() here due
+ * an issue in the getElement() of comment
+ * so use an "illegal" access to comment._element here
+ */
+ comment._element.mouseenter(function(){
+ //outside height may not be known
+ //var height = comment.getElement().height();
+ //element.height(height);
+ element.addClass('hover');
+ });
+ comment._element.mouseleave(function(){
+ element.removeClass('hover');
+ });
+
+};
+
+CommentVoteButton.prototype.createDom = function(){
+ this._element = this.makeElement('div');
+ if (this._score > 0){
+ this._element.html(this._score);
+ }
+ this._element.addClass('upvote');
+ if (this._voted){
+ this._element.addClass('upvoted');
+ }
+ this.decorate(this._element);
+};
+
+/**
+ * legacy Vote class
+ * handles all sorts of vote-like operations
+ */
+var Vote = function(){
+ // All actions are related to a question
+ var questionId;
+ //question slug to build redirect urls
+ var questionSlug;
+ // The object we operate on actually. It can be a question or an answer.
+ var postId;
+ var questionAuthorId;
+ var currentUserId;
+ var answerContainerIdPrefix = 'answer-container-';
+ var voteContainerId = 'vote-buttons';
+ var imgIdPrefixAccept = 'answer-img-accept-';
+ var classPrefixFollow= 'button follow';
+ var classPrefixFollowed= 'button followed';
+ var imgIdPrefixQuestionVoteup = 'question-img-upvote-';
+ var imgIdPrefixQuestionVotedown = 'question-img-downvote-';
+ var imgIdPrefixAnswerVoteup = 'answer-img-upvote-';
+ var imgIdPrefixAnswerVotedown = 'answer-img-downvote-';
+ var divIdFavorite = 'favorite-number';
+ var commentLinkIdPrefix = 'comment-';
+ var voteNumberClass = "vote-number";
+ var offensiveIdPrefixQuestionFlag = 'question-offensive-flag-';
+ var offensiveIdPrefixAnswerFlag = 'answer-offensive-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';
+
+ var acceptAnonymousMessage = gettext('insufficient privilege');
+ var acceptOwnAnswerMessage = gettext('cannot pick own answer as best');
+
+ var pleaseLogin = " <a href='" + askbot['urls']['user_signin']
+ + "?next=" + askbot['urls']['question_url_template']
+ + "'>"
+ + gettext('please login') + "</a>";
+
+ var favoriteAnonymousMessage = gettext('anonymous users cannot follow questions') + pleaseLogin;
+ var subscribeAnonymousMessage = gettext('anonymous users cannot subscribe to questions') + pleaseLogin;
+ var voteAnonymousMessage = gettext('anonymous users cannot vote') + pleaseLogin;
+ //there were a couple of more messages...
+ var offensiveConfirmation = gettext('please confirm offensive');
+ var offensiveAnonymousMessage = gettext('anonymous users cannot flag offensive posts') + pleaseLogin;
+ var removeConfirmation = gettext('confirm delete');
+ var removeAnonymousMessage = gettext('anonymous users cannot delete/undelete') + pleaseLogin;
+ var recoveredMessage = gettext('post recovered');
+ var deletedMessage = gettext('post deleted');
+
+ var VoteType = {
+ acceptAnswer : 0,
+ questionUpVote : 1,
+ questionDownVote : 2,
+ favorite : 4,
+ answerUpVote: 5,
+ answerDownVote:6,
+ offensiveQuestion : 7,
+ offensiveAnswer:8,
+ removeQuestion: 9,
+ removeAnswer:10,
+ questionSubscribeUpdates:11,
+ questionUnsubscribeUpdates:12
+ };
+
+ var getFavoriteButton = function(){
+ var favoriteButton = 'div.'+ voteContainerId +' a[class='+ classPrefixFollow +']';
+ favoriteButton += ', div.'+ voteContainerId +' a[class='+ classPrefixFollowed +']';
+ return $(favoriteButton);
+ };
+ var getFavoriteNumber = function(){
+ var favoriteNumber = '#'+ divIdFavorite ;
+ return $(favoriteNumber);
+ };
+ var getQuestionVoteUpButton = function(){
+ var questionVoteUpButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixQuestionVoteup +']';
+ return $(questionVoteUpButton);
+ };
+ var getQuestionVoteDownButton = function(){
+ var questionVoteDownButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixQuestionVotedown +']';
+ return $(questionVoteDownButton);
+ };
+ var getAnswerVoteUpButtons = function(){
+ var answerVoteUpButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixAnswerVoteup +']';
+ return $(answerVoteUpButton);
+ };
+ var getAnswerVoteDownButtons = function(){
+ var answerVoteDownButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixAnswerVotedown +']';
+ return $(answerVoteDownButton);
+ };
+ var getAnswerVoteUpButton = function(id){
+ var answerVoteUpButton = 'div.'+ voteContainerId +' div[id='+ imgIdPrefixAnswerVoteup + id + ']';
+ return $(answerVoteUpButton);
+ };
+ var getAnswerVoteDownButton = function(id){
+ var answerVoteDownButton = 'div.'+ voteContainerId +' div[id='+ imgIdPrefixAnswerVotedown + id + ']';
+ return $(answerVoteDownButton);
+ };
+
+ var getOffensiveQuestionFlag = function(){
+ var offensiveQuestionFlag = '#question-table span[class='+ offensiveClassFlag +']';
+ return $(offensiveQuestionFlag);
+ };
+
+ var getOffensiveAnswerFlags = function(){
+ var offensiveQuestionFlag = 'div.answer span[class='+ offensiveClassFlag +']';
+ return $(offensiveQuestionFlag);
+ };
+
+ var getremoveQuestionLink = function(){
+ var removeQuestionLink = 'div#question-controls a[id^='+ removeQuestionLinkIdPrefix +']';
+ return $(removeQuestionLink);
+ };
+
+ var getquestionSubscribeUpdatesCheckbox = function(){
+ return $('#' + questionSubscribeUpdates);
+ };
+
+ var getquestionSubscribeSidebarCheckbox= function(){
+ return $('#' + questionSubscribeSidebar);
+ };
+
+ var getremoveAnswersLinks = function(){
+ var removeAnswerLinks = 'div.answer-controls a[id^='+ removeAnswerLinkIdPrefix +']';
+ return $(removeAnswerLinks);
+ };
+
+ var setVoteImage = function(voteType, undo, object){
+ var flag = undo ? false : true;
+ if (object.hasClass("on")) {
+ object.removeClass("on");
+ }else{
+ object.addClass("on");
+ }
+
+ if(undo){
+ if(voteType == VoteType.questionUpVote || voteType == VoteType.questionDownVote){
+ $(getQuestionVoteUpButton()).removeClass("on");
+ $(getQuestionVoteDownButton()).removeClass("on");
+ }
+ else{
+ $(getAnswerVoteUpButton(postId)).removeClass("on");
+ $(getAnswerVoteDownButton(postId)).removeClass("on");
+ }
+ }
+ };
+
+ var setVoteNumber = function(object, number){
+ var voteNumber = object.parent('div.'+ voteContainerId).find('div.'+ voteNumberClass);
+ $(voteNumber).text(number);
+ };
+
+ var bindEvents = function(){
+ // accept answers
+ if(questionAuthorId == currentUserId){
+ var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']';
+ $(acceptedButtons).unbind('click').click(function(event){
+ Vote.accept($(event.target));
+ });
+ }
+ // set favorite question
+ var favoriteButton = getFavoriteButton();
+ favoriteButton.unbind('click').click(function(event){
+ //Vote.favorite($(event.target));
+ Vote.favorite(favoriteButton);
+ });
+
+ // question vote up
+ var questionVoteUpButton = getQuestionVoteUpButton();
+ questionVoteUpButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.questionUpVote);
+ });
+
+ var questionVoteDownButton = getQuestionVoteDownButton();
+ questionVoteDownButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.questionDownVote);
+ });
+
+ var answerVoteUpButton = getAnswerVoteUpButtons();
+ answerVoteUpButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.answerUpVote);
+ });
+
+ var answerVoteDownButton = getAnswerVoteDownButtons();
+ answerVoteDownButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.answerDownVote);
+ });
+
+ getOffensiveQuestionFlag().unbind('click').click(function(event){
+ Vote.offensive(this, VoteType.offensiveQuestion);
+ });
+
+ getOffensiveAnswerFlags().unbind('click').click(function(event){
+ Vote.offensive(this, VoteType.offensiveAnswer);
+ });
+
+ getremoveQuestionLink().unbind('click').click(function(event){
+ Vote.remove(this, VoteType.removeQuestion);
+ });
+
+ getquestionSubscribeUpdatesCheckbox().unbind('click').click(function(event){
+ //despeluchar esto
+ if (this.checked){
+ getquestionSubscribeSidebarCheckbox().attr({'checked': true});
+ Vote.vote($(event.target), VoteType.questionSubscribeUpdates);
+ }
+ else {
+ getquestionSubscribeSidebarCheckbox().attr({'checked': false});
+ Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates);
+ }
+ });
+
+ getquestionSubscribeSidebarCheckbox().unbind('click').click(function(event){
+ if (this.checked){
+ getquestionSubscribeUpdatesCheckbox().attr({'checked': true});
+ Vote.vote($(event.target), VoteType.questionSubscribeUpdates);
+ }
+ else {
+ getquestionSubscribeUpdatesCheckbox().attr({'checked': false});
+ Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates);
+ }
+ });
+
+ getremoveAnswersLinks().unbind('click').click(function(event){
+ Vote.remove(this, VoteType.removeAnswer);
+ });
+ };
+
+ var submit = function(object, voteType, callback) {
+ //this function submits votes
+ $.ajax({
+ type: "POST",
+ cache: false,
+ dataType: "json",
+ url: askbot['urls']['vote_url_template'].replace('{{QuestionID}}', questionId),
+ data: { "type": voteType, "postId": postId },
+ error: handleFail,
+ success: function(data){callback(object, voteType, data);}
+ });
+ };
+
+ var handleFail = function(xhr, msg){
+ alert("Callback invoke error: " + msg);
+ };
+
+ // callback function for Accept Answer action
+ var callback_accept = function(object, voteType, data){
+ if(data.allowed == "0" && data.success == "0"){
+ showMessage(object, acceptAnonymousMessage);
+ }
+ else if(data.allowed == "-1"){
+ 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 +"]");
+ $(answers).removeClass("accepted-answer");
+ 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");
+ }
+ else{
+ showMessage(object, data.message);
+ }
+ };
+
+ var callback_favorite = function(object, voteType, data){
+ if(data.allowed == "0" && data.success == "0"){
+ showMessage(
+ object,
+ favoriteAnonymousMessage.replace(
+ '{{QuestionID}}',
+ questionId).replace(
+ '{{questionSlug}}',
+ ''
+ )
+ );
+ }
+ else if(data.status == "1"){
+ var follow_html = gettext('Follow');
+ object.attr("class", 'button follow');
+ object.html(follow_html);
+ var fav = getFavoriteNumber();
+ fav.removeClass("my-favorite-number");
+ if(data.count === 0){
+ data.count = '';
+ fav.text('');
+ }else{
+ var fmts = ngettext('%s follower', '%s followers', data.count);
+ fav.text(interpolate(fmts, [data.count]));
+ }
+ }
+ else if(data.success == "1"){
+ var followed_html = gettext('<div>Following</div><div class="unfollow">Unfollow</div>');
+ object.html(followed_html);
+ object.attr("class", 'button followed');
+ var fav = getFavoriteNumber();
+ var fmts = ngettext('%s follower', '%s followers', data.count);
+ fav.text(interpolate(fmts, [data.count]));
+ fav.addClass("my-favorite-number");
+ }
+ else{
+ showMessage(object, data.message);
+ }
+ };
+
+ var callback_vote = function(object, voteType, data){
+ if (data.success == '0'){
+ showMessage(object, data.message);
+ return;
+ }
+ else {
+ if (data.status == '1'){
+ setVoteImage(voteType, true, object);
+ }
+ else {
+ setVoteImage(voteType, false, object);
+ }
+ setVoteNumber(object, data.count);
+ if (data.message && data.message.length > 0){
+ showMessage(object, data.message);
+ }
+ return;
+ }
+ //may need to take a look at this again
+ if (data.status == "1"){
+ setVoteImage(voteType, true, object);
+ setVoteNumber(object, data.count);
+ }
+ else if (data.success == "1"){
+ setVoteImage(voteType, false, object);
+ setVoteNumber(object, data.count);
+ if (data.message.length > 0){
+ showMessage(object, data.message);
+ }
+ }
+ };
+
+ var callback_offensive = function(object, voteType, data){
+ //todo: transfer proper translations of these from i18n.js
+ //to django.po files
+ //_('anonymous users cannot flag offensive posts') + pleaseLogin;
+ if (data.success == "1"){
+ $(object).children('span[class=darkred]').text("("+ data.count +")");
+ }
+ else {
+ object = $(object);
+ showMessage(object, data.message)
+ }
+ };
+
+ var callback_remove = function(object, voteType, data){
+ if (data.success == "1"){
+ if (removeActionType == 'delete'){
+ postNode.addClass('deleted');
+ postRemoveLink.innerHTML = gettext('undelete');
+ showMessage(object, deletedMessage);
+ }
+ else if (removeActionType == 'undelete') {
+ postNode.removeClass('deleted');
+ postRemoveLink.innerHTML = gettext('delete');
+ showMessage(object, recoveredMessage);
+ }
+ }
+ else {
+ showMessage(object, data.message)
+ }
+ };
+
+ return {
+ init : function(qId, qSlug, questionAuthor, userId){
+ questionId = qId;
+ questionSlug = qSlug;
+ questionAuthorId = questionAuthor;
+ currentUserId = userId;
+ bindEvents();
+ },
+
+ //accept answer
+ accept: function(object){
+ postId = object.attr("id").substring(imgIdPrefixAccept.length);
+ submit(object, VoteType.acceptAnswer, callback_accept);
+ },
+ //mark question as favorite
+ favorite: function(object){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ showMessage(
+ object,
+ favoriteAnonymousMessage.replace(
+ "{{QuestionID}}",
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ return false;
+ }
+ submit(object, VoteType.favorite, callback_favorite);
+ },
+
+ vote: function(object, voteType){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ if (voteType == VoteType.questionSubscribeUpdates || voteType == VoteType.questionUnsubscribeUpdates){
+ getquestionSubscribeSidebarCheckbox().removeAttr('checked');
+ getquestionSubscribeUpdatesCheckbox().removeAttr('checked');
+ showMessage(object, subscribeAnonymousMessage);
+ }else {
+ showMessage(
+ $(object),
+ voteAnonymousMessage.replace(
+ "{{QuestionID}}",
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ }
+ return false;
+ }
+ // up and downvote processor
+ if (voteType == VoteType.answerUpVote){
+ postId = object.attr("id").substring(imgIdPrefixAnswerVoteup.length);
+ }
+ else if (voteType == VoteType.answerDownVote){
+ postId = object.attr("id").substring(imgIdPrefixAnswerVotedown.length);
+ }
+
+ submit(object, voteType, callback_vote);
+ },
+ //flag offensive
+ offensive: function(object, voteType){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ showMessage(
+ $(object),
+ offensiveAnonymousMessage.replace(
+ "{{QuestionID}}",
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ return false;
+ }
+ if (confirm(offensiveConfirmation)){
+ postId = object.id.substr(object.id.lastIndexOf('-') + 1);
+ submit(object, voteType, callback_offensive);
+ }
+ },
+ //delete question or answer (comments are deleted separately)
+ remove: function(object, voteType){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ showMessage(
+ $(object),
+ removeAnonymousMessage.replace(
+ '{{QuestionID}}',
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ return false;
+ }
+ bits = object.id.split('-');
+ postId = bits.pop();/* this seems to be used within submit! */
+ postType = bits.shift();
+
+ var do_proceed = false;
+ if (postType == 'answer'){
+ postNode = $('#answer-container-' + postId);
+ }
+ else if (postType == 'question'){
+ postNode = $('#question-table');
+ }
+ postRemoveLink = object;
+ if (postNode.hasClass('deleted')){
+ removeActionType = 'undelete';
+ do_proceed = true;
+ }
+ else {
+ removeActionType = 'delete';
+ do_proceed = confirm(removeConfirmation);
+ }
+ if (do_proceed) {
+ submit($(object), voteType, callback_remove);
+ }
+ }
+ };
+} ();
+
+var questionRetagger = function(){
+
+ var oldTagsHTML = '';
+ var tagInput = null;
+ var tagsDiv = null;
+ var retagLink = null;
+
+ var restoreEventHandlers = function(){
+ $(document).unbind('click');
+ };
+
+ var cancelRetag = function(){
+ tagsDiv.html(oldTagsHTML);
+ tagsDiv.removeClass('post-retag');
+ tagsDiv.addClass('post-tags');
+ restoreEventHandlers();
+ initRetagger();
+ };
+
+ var render_tag = function(tag_name){
+ //copy-paste from live search!!!
+ var tag = new Tag();
+ tag.setName(tag_name);
+ return tag.getElement().outerHTML();
+ };
+
+ var drawNewTags = function(new_tags){
+ new_tags = new_tags.split(/\s+/);
+ var tags_html = ''
+ $.each(new_tags, function(index, name){
+ tags_html += render_tag(name);
+ });
+ tagsDiv.html(tags_html);
+ };
+
+ var doRetag = function(){
+ $.ajax({
+ type: "POST",
+ url: retagUrl,
+ dataType: "json",
+ data: { tags: getUniqueWords(tagInput.val()).join(' ') },
+ success: function(json) {
+ if (json['success'] === true){
+ new_tags = getUniqueWords(json['new_tags']);
+ oldTagsHtml = '';
+ cancelRetag();
+ drawNewTags(new_tags.join(' '));
+ }
+ else {
+ cancelRetag();
+ showMessage(tagsDiv, json['message']);
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ showMessage(tagsDiv, 'sorry, somethin is not right here');
+ cancelRetag();
+ }
+ });
+ return false;
+ }
+
+ var setupInputEventHandlers = function(input){
+ input.keydown(function(e){
+ if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)){
+ cancelRetag();
+ }
+ });
+ $(document).unbind('click').click(cancelRetag, false);
+ input.click(function(){return false});
+ };
+
+ var createRetagForm = function(old_tags_string){
+ var div = $('<form method="post"></form>');
+ tagInput = $('<input id="retag_tags" type="text" autocomplete="off" name="tags" size="30"/>');
+ //var tagLabel = $('<label for="retag_tags" class="error"></label>');
+ tagInput.val(old_tags_string);
+ //populate input
+ var tagAc = new AutoCompleter({
+ url: askbot['urls']['get_tag_list'],
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: true,
+ maxCacheLength: 100,
+ delay: 10
+ });
+ tagAc.decorate(tagInput);
+ div.append(tagInput);
+ //div.append(tagLabel);
+ setupInputEventHandlers(tagInput);
+
+ //button = $('<input type="submit" />');
+ //button.val(gettext('save tags'));
+ //div.append(button);
+ //setupButtonEventHandlers(button);
+ div.validate({//copy-paste from utils.js
+ rules: {
+ tags: {
+ required: true,
+ maxlength: askbot['settings']['maxTagsPerPost'] * askbot['settings']['maxTagLength'],
+ limit_tag_count: true,
+ limit_tag_length: true
+ }
+ },
+ messages: {
+ tags: {
+ required: gettext('tags cannot be empty'),
+ maxlength: askbot['messages']['tagLimits'],
+ limit_tag_count: askbot['messages']['maxTagsPerPost'],
+ limit_tag_length: askbot['messages']['maxTagLength']
+ }
+ },
+ submitHandler: doRetag,
+ errorClass: "retag-error"
+ });
+
+ return div;
+ };
+
+ var getTagsAsString = function(tags_div){
+ var links = tags_div.find('a');
+ var tags_str = '';
+ links.each(function(index, element){
+ if (index === 0){
+ tags_str = $(element).html();
+ }
+ else {
+ tags_str += ' ' + $(element).html();
+ }
+ });
+ return tags_str;
+ };
+
+ var noopHandler = function(){
+ tagInput.focus();
+ return false;
+ };
+
+ var deactivateRetagLink = function(){
+ retagLink.unbind('click').click(noopHandler);
+ retagLink.unbind('keypress').keypress(noopHandler);
+ };
+
+ var startRetag = function(){
+ tagsDiv = $('#question-tags');
+ oldTagsHTML = tagsDiv.html();//save to restore on cancel
+ var old_tags_string = getTagsAsString(tagsDiv);
+ var retag_form = createRetagForm(old_tags_string);
+ tagsDiv.html('');
+ tagsDiv.append(retag_form);
+ tagsDiv.removeClass('post-tags');
+ tagsDiv.addClass('post-retag');
+ tagInput.focus();
+ deactivateRetagLink();
+ return false;
+ };
+
+ var setupClickAndEnterHandler = function(element, callback){
+ element.unbind('click').click(callback);
+ element.unbind('keypress').keypress(function(e){
+ if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)){
+ callback();
+ }
+ });
+ }
+
+ var initRetagger = function(){
+ setupClickAndEnterHandler(retagLink, startRetag);
+ };
+
+ return {
+ init: function(){
+ retagLink = $('#retag');
+ initRetagger();
+ }
+ };
+}();
+
+//constructor for the form
+var EditCommentForm = function(){
+ WrappedElement.call(this);
+ this._comment = null;
+ this._comment_widget = null;
+ this._element = null;
+ this._text = '';
+ this._id = 'edit-comment-form';
+};
+inherits(EditCommentForm, WrappedElement);
+
+EditCommentForm.prototype.getElement = function(){
+ EditCommentForm.superClass_.getElement.call(this);
+ this._textarea.val(this._text);
+ return this._element;
+};
+
+EditCommentForm.prototype.attachTo = function(comment, mode){
+ this._comment = comment;
+ this._type = mode;
+ this._comment_widget = comment.getContainerWidget();
+ this._text = comment.getText();
+ comment.getElement().after(this.getElement());
+ comment.getElement().hide();
+ this._comment_widget.hideButton();
+ if (this._type == 'add'){
+ this._submit_btn.html(gettext('add comment'));
+ }
+ else {
+ this._submit_btn.html(gettext('save comment'));
+ }
+ this.getElement().show();
+ this.focus();
+ putCursorAtEnd(this._textarea);
+};
+
+EditCommentForm.prototype.getCounterUpdater = function(){
+ //returns event handler
+ var counter = this._text_counter;
+ var handler = function(){
+ var textarea = $(this);
+ var length = textarea.val() ? textarea.val().length : 0;
+ var length1 = maxCommentLength - 100;
+ if (length1 < 0){
+ length1 = Math.round(0.7*maxCommentLength);
+ }
+ var length2 = maxCommentLength - 30;
+ if (length2 < 0){
+ length2 = Math.round(0.9*maxCommentLength);
+ }
+
+ //todo:
+ //1) use class instead of color - move color def to css
+ var color = 'maroon';
+ var chars = 10;
+ if (length === 0){
+ var feedback = interpolate(gettext('%s title minchars'), [chars]);
+ }
+ else if (length < 10){
+ var feedback = interpolate(gettext('enter %s more characters'), [chars - length]);
+ }
+ else {
+ color = length > length2 ? "#f00" : length > length1 ? "#f60" : "#999"
+ chars = maxCommentLength - length
+ var feedback = interpolate(gettext('%s characters left'), [chars])
+ }
+ counter.html(feedback).css('color', color)
+ };
+ return handler;
+};
+
+EditCommentForm.prototype.canCancel = function(){
+ if (this._element === null){
+ return true;
+ }
+ var ctext = $.trim(this._textarea.val());
+ if ($.trim(ctext) == $.trim(this._text)){
+ return true;
+ }
+ else if (this.confirmAbandon()){
+ return true;
+ }
+ this.focus();
+ return false;
+};
+
+EditCommentForm.prototype.getCancelHandler = function(){
+ var form = this;
+ return function(){
+ if (form.canCancel()){
+ form.detach();
+ }
+ return false;
+ };
+};
+
+EditCommentForm.prototype.detach = function(){
+ if (this._comment === null){
+ return;
+ }
+ this._comment.getContainerWidget().showButton();
+ if (this._comment.isBlank()){
+ this._comment.dispose();
+ }
+ else {
+ this._comment.getElement().show();
+ }
+ this.reset();
+ this._element = this._element.detach();
+};
+
+EditCommentForm.prototype.createDom = function(){
+ this._element = $('<form></form>');
+ this._element.attr('class', 'post-comments');
+
+ var div = $('<div></div>');
+ this._textarea = $('<textarea></textarea>');
+ this._textarea.attr('id', this._id);
+
+ /*
+ this._help_text = $('<span></span>').attr('class', 'help-text');
+ this._help_text.html(gettext('Markdown is allowed in the comments'));
+ div.append(this._help_text);
+
+ this._help_text = $('<div></div>').attr('class', 'clearfix');
+ div.append(this._help_text);
+ */
+
+ this._element.append(div);
+ div.append(this._textarea);
+ this._text_counter = $('<span></span>').attr('class', 'counter');
+ div.append(this._text_counter);
+ this._submit_btn = $('<button class="submit small"></button>');
+ div.append(this._submit_btn);
+ this._cancel_btn = $('<button class="submit small"></button>');
+ this._cancel_btn.html(gettext('cancel'));
+ div.append(this._cancel_btn);
+
+ setupButtonEventHandlers(this._submit_btn, this.getSaveHandler());
+ setupButtonEventHandlers(this._cancel_btn, this.getCancelHandler());
+
+ var update_counter = this.getCounterUpdater();
+ var escape_handler = makeKeyHandler(27, this.getCancelHandler());
+ this._textarea.attr('name', 'comment')
+ .attr('cols', 60)
+ .attr('rows', 5)
+ .attr('maxlength', maxCommentLength)
+ .blur(update_counter)
+ .focus(update_counter)
+ .keyup(update_counter)
+ .keyup(escape_handler);
+ if (askbot['settings']['saveCommentOnEnter']){
+ var save_handler = makeKeyHandler(13, this.getSaveHandler());
+ this._textarea.keydown(save_handler);
+ }
+ this._textarea.val(this._text);
+};
+
+EditCommentForm.prototype.enableButtons = function(){
+ this._submit_btn.attr('disabled', '');
+ this._cancel_btn.attr('disabled', '');
+};
+
+EditCommentForm.prototype.disableButtons = function(){
+ this._submit_btn.attr('disabled', 'disabled');
+ this._cancel_btn.attr('disabled', 'disabled');
+};
+
+EditCommentForm.prototype.reset = function(){
+ this._comment = null;
+ this._text = '';
+ this._textarea.val('');
+ this.enableButtons();
+};
+
+EditCommentForm.prototype.confirmAbandon = function(){
+ this.focus(true);
+ this._textarea.addClass('highlight');
+ var answer = confirm(gettext('confirm abandon comment'));
+ this._textarea.removeClass('highlight');
+ return answer;
+};
+
+EditCommentForm.prototype.focus = function(hard){
+ this._textarea.focus();
+ if (hard === true){
+ $(this._textarea).scrollTop();
+ }
+};
+
+EditCommentForm.prototype.getSaveHandler = function(){
+
+ var me = this;
+ return function(){
+ var text = me._textarea.val();
+ if (text.length < 10){
+ me.focus();
+ return false;
+ }
+
+ var post_data = {
+ comment: text
+ };
+
+ if (me._type == 'edit'){
+ post_data['comment_id'] = me._comment.getId();
+ post_url = askbot['urls']['editComment'];
+ }
+ else {
+ post_data['post_type'] = me._comment.getParentType();
+ post_data['post_id'] = me._comment.getParentId();
+ post_url = askbot['urls']['postComments'];
+ }
+
+ me.disableButtons();
+
+ $.ajax({
+ type: "POST",
+ url: post_url,
+ dataType: "json",
+ data: post_data,
+ success: function(json) {
+ if (me._type == 'add'){
+ me._comment.dispose();
+ me._comment.getContainerWidget().reRenderComments(json);
+ }
+ else {
+ me._comment.setContent(json);
+ me._comment.getElement().show();
+ }
+ me.detach();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ me._comment.getElement().show();
+ showMessage(me._comment.getElement(), xhr.responseText, 'after');
+ me.detach();
+ me.enableButtons();
+ }
+ });
+ return false;
+ };
+};
+
+//a single instance to reuse
+var editCommentForm = new EditCommentForm();
+
+var Comment = function(widget, data){
+ WrappedElement.call(this);
+ this._container_widget = widget;
+ this._data = data || {};
+ this._blank = true;//set to false by setContent
+ this._element = null;
+ this._delete_prompt = gettext('delete this comment');
+ if (data && data['is_deletable']){
+ this._deletable = data['is_deletable'];
+ }
+ else {
+ this._deletable = false;
+ }
+ if (data && data['is_editable']){
+ this._editable = data['is_deletable'];
+ }
+ else {
+ this._editable = false;
+ }
+};
+inherits(Comment, WrappedElement);
+
+Comment.prototype.decorate = function(element){
+ this._element = $(element);
+ var parent_type = this._element.parent().parent().attr('id').split('-')[2];
+ var comment_id = this._element.attr('id').replace('comment-','');
+ this._data = {id: comment_id};
+ var delete_img = this._element.find('span.delete-icon');
+ if (delete_img.length > 0){
+ this._deletable = true;
+ this._delete_icon = new DeleteIcon(this.deletePrompt);
+ this._delete_icon.setHandler(this.getDeleteHandler());
+ this._delete_icon.decorate(delete_img);
+ }
+ var edit_link = this._element.find('a.edit');
+ if (edit_link.length > 0){
+ this._editable = true;
+ this._edit_link = new EditLink();
+ this._edit_link.setHandler(this.getEditHandler());
+ this._edit_link.decorate(edit_link);
+ }
+
+ var vote = new CommentVoteButton(this);
+ vote.decorate(this._element.find('.comment-votes .upvote'));
+
+ this._blank = false;
+};
+
+Comment.prototype.isBlank = function(){
+ return this._blank;
+};
+
+Comment.prototype.getId = function(){
+ return this._data['id'];
+};
+
+Comment.prototype.hasContent = function(){
+ return ('id' in this._data);
+ //shortcut for 'user_url' 'html' 'user_display_name' 'comment_age'
+};
+
+Comment.prototype.hasText = function(){
+ return ('text' in this._data);
+}
+
+Comment.prototype.getContainerWidget = function(){
+ return this._container_widget;
+};
+
+Comment.prototype.getParentType = function(){
+ return this._container_widget.getPostType();
+};
+
+Comment.prototype.getParentId = function(){
+ return this._container_widget.getPostId();
+};
+
+Comment.prototype.setContent = function(data){
+ this._data = data || this._data;
+ this._element.html('');
+ this._element.attr('class', 'comment');
+ this._element.attr('id', 'comment-' + this._data['id']);
+
+ var votes = this.makeElement('div');
+ votes.addClass('comment-votes');
+
+ var vote = new CommentVoteButton(this);
+ if (this._data['upvoted_by_user']){
+ vote.setVoted(true);
+ }
+ vote.setScore(this._data['score']);
+ votes.append(vote.getElement());
+
+ this._element.append(votes);
+
+ this._comment_delete = $('<div class="comment-delete"></div>');
+ if (this._deletable){
+ this._delete_icon = new DeleteIcon(this._delete_prompt);
+ this._delete_icon.setHandler(this.getDeleteHandler());
+ this._comment_delete.append(this._delete_icon.getElement());
+ }
+ this._element.append(this._comment_delete);
+
+ this._comment_body = $('<div class="comment-body"></div>');
+ this._comment_body.html(this._data['html']);
+ //this._comment_body.append(' &ndash; ');
+
+ this._user_link = $('<a></a>').attr('class', 'author');
+ this._user_link.attr('href', this._data['user_url']);
+ this._user_link.html(this._data['user_display_name']);
+ 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_body.append(')');
+
+ if (this._editable){
+ this._edit_link = new EditLink();
+ this._edit_link.setHandler(this.getEditHandler())
+ this._comment_body.append(this._edit_link.getElement());
+ }
+ this._element.append(this._comment_body);
+
+ this._blank = false;
+};
+
+Comment.prototype.dispose = function(){
+ if (this._comment_body){
+ this._comment_body.remove();
+ }
+ if (this._comment_delete){
+ this._comment_delete.remove();
+ }
+ if (this._user_link){
+ this._user_link.remove();
+ }
+ if (this._comment_age){
+ this._comment_age.remove();
+ }
+ if (this._delete_icon){
+ this._delete_icon.dispose();
+ }
+ if (this._edit_link){
+ this._edit_link.dispose();
+ }
+ this._data = null;
+ Comment.superClass_.dispose.call(this);
+};
+
+Comment.prototype.getElement = function(){
+ Comment.superClass_.getElement.call(this);
+ if (this.isBlank() && this.hasContent()){
+ this.setContent();
+ if (enableMathJax === true){
+ MathJax.Hub.Queue(['Typeset', MathJax.Hub]);
+ }
+ }
+ return this._element;
+};
+
+Comment.prototype.loadText = function(on_load_handler){
+ var me = this;
+ $.ajax({
+ type: "GET",
+ url: askbot['urls']['getComment'],
+ data: {id: this._data['id']},
+ success: function(json){
+ me._data['text'] = json['text'];
+ on_load_handler()
+ },
+ error: function(xhr, textStatus, exception) {
+ showMessage(me.getElement(), xhr.responseText, 'after');
+ }
+ });
+};
+
+Comment.prototype.getText = function(){
+ if (!this.isBlank()){
+ if ('text' in this._data){
+ return this._data['text'];
+ }
+ }
+ return '';
+}
+
+Comment.prototype.getEditHandler = function(){
+ var comment = this;
+ return function(){
+ if (editCommentForm.canCancel()){
+ editCommentForm.detach();
+ if (comment.hasText()){
+ editCommentForm.attachTo(comment, 'edit');
+ }
+ else {
+ comment.loadText(
+ function(){
+ editCommentForm.attachTo(comment, 'edit');
+ }
+ );
+ }
+ }
+ };
+};
+
+Comment.prototype.getDeleteHandler = function(){
+ var comment = this;
+ var del_icon = this._delete_icon;
+ return function(){
+ if (confirm(gettext('confirm delete comment'))){
+ comment.getElement().hide();
+ $.ajax({
+ type: 'POST',
+ url: askbot['urls']['deleteComment'],
+ data: { comment_id: comment.getId() },
+ success: function(json, textStatus, xhr) {
+ comment.dispose();
+ },
+ error: function(xhr, textStatus, exception) {
+ comment.getElement().show()
+ showMessage(del_icon.getElement(), xhr.responseText);
+ },
+ dataType: "json"
+ });
+ }
+ };
+};
+
+var PostCommentsWidget = function(){
+ WrappedElement.call(this);
+ this._denied = false;
+};
+inherits(PostCommentsWidget, WrappedElement);
+
+PostCommentsWidget.prototype.decorate = function(element){
+ var element = $(element);
+ this._element = element;
+
+ var widget_id = element.attr('id');
+ var id_bits = widget_id.split('-');
+ this._post_id = id_bits[3];
+ this._post_type = id_bits[2];
+ this._is_truncated = askbot['data'][widget_id]['truncated'];
+ this._user_can_post = askbot['data'][widget_id]['can_post'];
+
+ //see if user can comment here
+ var controls = element.find('.controls');
+ this._activate_button = controls.find('.button');
+
+ if (this._user_can_post == false){
+ setupButtonEventHandlers(
+ this._activate_button,
+ this.getReadOnlyLoadHandler()
+ );
+ }
+ else {
+ setupButtonEventHandlers(
+ this._activate_button,
+ this.getActivateHandler()
+ );
+ }
+
+ this._cbox = element.find('.content');
+ var comments = new Array();
+ var me = this;
+ this._cbox.children().each(function(index, element){
+ var comment = new Comment(me);
+ comments.push(comment)
+ comment.decorate(element);
+ });
+ this._comments = comments;
+};
+
+PostCommentsWidget.prototype.getPostType = function(){
+ return this._post_type;
+};
+
+PostCommentsWidget.prototype.getPostId = function(){
+ return this._post_id;
+};
+
+PostCommentsWidget.prototype.hideButton = function(){
+ this._activate_button.hide();
+};
+
+PostCommentsWidget.prototype.showButton = function(){
+ if (this._is_truncated === false){
+ this._activate_button.html(askbot['messages']['addComment']);
+ }
+ this._activate_button.show();
+}
+
+PostCommentsWidget.prototype.startNewComment = function(){
+ var comment = new Comment(this);
+ this._cbox.append(comment.getElement());
+ editCommentForm.attachTo(comment, 'add');
+};
+
+PostCommentsWidget.prototype.needToReload = function(){
+ return this._is_truncated;
+};
+
+PostCommentsWidget.prototype.getActivateHandler = function(){
+ var me = this;
+ return function() {
+ if (editCommentForm.canCancel()){
+ editCommentForm.detach();
+ if (me.needToReload()){
+ me.reloadAllComments(function(json){
+ me.reRenderComments(json);
+ me.startNewComment();
+ });
+ }
+ else {
+ me.startNewComment();
+ }
+ }
+ };
+};
+
+PostCommentsWidget.prototype.getReadOnlyLoadHandler = function(){
+ var me = this;
+ return function(){
+ me.reloadAllComments(function(json){
+ me.reRenderComments(json);
+ me._activate_button.remove();
+ });
+ };
+};
+
+
+PostCommentsWidget.prototype.reloadAllComments = function(callback){
+ var post_data = {post_id: this._post_id, post_type: this._post_type};
+ var me = this;
+ $.ajax({
+ type: "GET",
+ url: askbot['urls']['postComments'],
+ data: post_data,
+ success: function(json){
+ callback(json);
+ me._is_truncated = false;
+ },
+ dataType: "json"
+ });
+};
+
+PostCommentsWidget.prototype.reRenderComments = function(json){
+ $.each(this._comments, function(i, item){
+ item.dispose();
+ });
+ this._comments = new Array();
+ var me = this;
+ $.each(json, function(i, item){
+ var comment = new Comment(me, item);
+ me._cbox.append(comment.getElement());
+ me._comments.push(comment);
+ });
+};
+
+
+var socialSharing = function(){
+
+ var SERVICE_DATA = {
+ //url - template for the sharing service url, params are for the popup
+ identica: {
+ url: "http://identi.ca/notice/new?status_textarea={TEXT}%20{URL}",
+ params: "width=820, height=526,toolbar=1,status=1,resizable=1,scrollbars=1"
+ },
+ twitter: {
+ url: "http://twitter.com/share?url={URL}&ref=twitbtn&text={TEXT}",
+ params: "width=820,height=526,toolbar=1,status=1,resizable=1,scrollbars=1"
+ },
+ facebook: {
+ url: "http://www.facebook.com/sharer.php?u={URL}&ref=fbshare&t={TEXT}",
+ 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}",
+ params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1"
+ }
+ };
+ var URL = "";
+ var TEXT = "";
+
+ var share_page = function(service_name){
+ if (SERVICE_DATA[service_name]){
+ var url = SERVICE_DATA[service_name]['url'];
+ $.ajax({
+ async: false,
+ url: "http://json-tinyurl.appspot.com/?&callback=?",
+ dataType: "json",
+ data: {'url':URL},
+ success: function(data){
+ url = url.replace('{URL}', data.tinyurl);
+ },
+ error: function(data){
+ url = url.replace('{URL}', URL);
+ },
+ complete: function(data){
+ url = url.replace('{TEXT}', TEXT);
+ var params = SERVICE_DATA[service_name]['params'];
+ if(!window.open(url, "sharing", params)){
+ window.location.href=url;
+ }
+ }
+ });
+ }
+ }
+
+ return {
+ init: function(){
+ URL = window.location.href;
+ TEXT = escape($('h1 > a').html());
+ var fb = $('a.facebook-share')
+ var tw = $('a.twitter-share');
+ var ln = $('a.linkedin-share');
+ var ica = $('a.identica-share');
+ copyAltToTitle(fb);
+ copyAltToTitle(tw);
+ copyAltToTitle(ln);
+ copyAltToTitle(ica);
+ setupButtonEventHandlers(fb, function(){share_page("facebook")});
+ setupButtonEventHandlers(tw, function(){share_page("twitter")});
+ setupButtonEventHandlers(ln, function(){share_page("linkedin")});
+ setupButtonEventHandlers(ica, function(){share_page("identica")});
+ }
+ }
+}();
+
+/**
+ * @constructor
+ * @extends {SimpleControl}
+ */
+var QASwapper = function(){
+ SimpleControl.call(this);
+ this._ans_id = null;
+};
+inherits(QASwapper, SimpleControl);
+
+QASwapper.prototype.decorate = function(element){
+ this._element = element;
+ this._ans_id = parseInt(element.attr('id').split('-').pop());
+ var me = this;
+ this.setHandler(function(){
+ me.startSwapping();
+ });
+};
+
+QASwapper.prototype.startSwapping = function(){
+ while (true){
+ var title = prompt(gettext('Please enter question title (>10 characters)'));
+ if (title.length >= 10){
+ var data = {new_title: title, answer_id: this._ans_id};
+ $.ajax({
+ type: "POST",
+ cache: false,
+ dataType: "json",
+ url: askbot['urls']['swap_question_with_answer'],
+ data: data,
+ success: function(data){
+ var url_template = askbot['urls']['question_url_template'];
+ new_question_url = url_template.replace(
+ '{{QuestionID}}',
+ data['id']
+ ).replace(
+ '{{questionSlug}}',
+ data['slug']
+ );
+ window.location.href = new_question_url;
+ }
+ });
+ break;
+ }
+ }
+};
+
+$(document).ready(function() {
+ $('[id^="comments-for-"]').each(function(index, element){
+ var comments = new PostCommentsWidget();
+ comments.decorate(element);
+ });
+ $('[id^="swap-question-with-answer-"]').each(function(idx, element){
+ var swapper = new QASwapper();
+ swapper.decorate($(element));
+ });
+ questionRetagger.init();
+ socialSharing.init();
+});
+
+
+/*
+Prettify
+http://www.apache.org/licenses/LICENSE-2.0
+*/
+var PR_SHOULD_USE_CONTINUATION = true; var PR_TAB_WIDTH = 8; var PR_normalizedHtml; var PR; var prettyPrintOne; var prettyPrint; function _pr_isIE6() { var isIE6 = navigator && navigator.userAgent && /\bMSIE 6\./.test(navigator.userAgent); _pr_isIE6 = function() { return isIE6; }; return isIE6; } (function() { function wordSet(words) { words = words.split(/ /g); var set = {}; for (var i = words.length; --i >= 0; ) { var w = words[i]; if (w) { set[w] = null; } } return set; } var FLOW_CONTROL_KEYWORDS = "break continue do else for if return while "; var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " + "double enum extern float goto int long register short signed sizeof " + "static struct switch typedef union unsigned void volatile "; var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " + "new operator private protected public this throw true try "; var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " + "concept concept_map const_cast constexpr decltype " + "dynamic_cast explicit export friend inline late_check " + "mutable namespace nullptr reinterpret_cast static_assert static_cast " + "template typeid typename typeof using virtual wchar_t where "; var JAVA_KEYWORDS = COMMON_KEYWORDS + "boolean byte extends final finally implements import instanceof null " + "native package strictfp super synchronized throws transient "; var CSHARP_KEYWORDS = JAVA_KEYWORDS + "as base by checked decimal delegate descending event " + "fixed foreach from group implicit in interface internal into is lock " + "object out override orderby params readonly ref sbyte sealed " + "stackalloc string select uint ulong unchecked unsafe ushort var "; var JSCRIPT_KEYWORDS = COMMON_KEYWORDS + "debugger eval export function get null set undefined var with " + "Infinity NaN "; var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " + "goto if import last local my next no our print package redo require " + "sub undef unless until use wantarray while BEGIN END "; var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " + "elif except exec finally from global import in is lambda " + "nonlocal not or pass print raise try with yield " + "False True None "; var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" + " defined elsif end ensure false in module next nil not or redo rescue " + "retry self super then true undef unless until when yield BEGIN END "; var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " + "function in local set then until "; var ALL_KEYWORDS = (CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS); var PR_STRING = 'str'; var PR_KEYWORD = 'kwd'; var PR_COMMENT = 'com'; var PR_TYPE = 'typ'; var PR_LITERAL = 'lit'; var PR_PUNCTUATION = 'pun'; var PR_PLAIN = 'pln'; var PR_TAG = 'tag'; var PR_DECLARATION = 'dec'; var PR_SOURCE = 'src'; var PR_ATTRIB_NAME = 'atn'; var PR_ATTRIB_VALUE = 'atv'; var PR_NOCODE = 'nocode'; function isWordChar(ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } function spliceArrayInto(inserted, container, containerPosition, countReplaced) { inserted.unshift(containerPosition, countReplaced || 0); try { container.splice.apply(container, inserted); } finally { inserted.splice(0, 2); } } var REGEXP_PRECEDER_PATTERN = function() { var preceders = ["!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=", "&=", "(", "*", "*=", "+=", ",", "-=", "->", "/", "/=", ":", "::", ";", "<", "<<", "<<=", "<=", "=", "==", "===", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", "^", "^=", "^^", "^^=", "{", "|", "|=", "||", "||=", "~", "break", "case", "continue", "delete", "do", "else", "finally", "instanceof", "return", "throw", "try", "typeof"]; var pattern = '(?:' + '(?:(?:^|[^0-9.])\\.{1,3})|' + '(?:(?:^|[^\\+])\\+)|' + '(?:(?:^|[^\\-])-)'; for (var i = 0; i < preceders.length; ++i) { var preceder = preceders[i]; if (isWordChar(preceder.charAt(0))) { pattern += '|\\b' + preceder; } else { pattern += '|' + preceder.replace(/([^=<>:&])/g, '\\$1'); } } pattern += '|^)\\s*$'; return new RegExp(pattern); } (); var pr_amp = /&/g; var pr_lt = /</g; var pr_gt = />/g; var pr_quot = /\"/g; function attribToHtml(str) { return str.replace(pr_amp, '&amp;').replace(pr_lt, '&lt;').replace(pr_gt, '&gt;').replace(pr_quot, '&quot;'); } function textToHtml(str) { return str.replace(pr_amp, '&amp;').replace(pr_lt, '&lt;').replace(pr_gt, '&gt;'); } var pr_ltEnt = /&lt;/g; var pr_gtEnt = /&gt;/g; var pr_aposEnt = /&apos;/g; var pr_quotEnt = /&quot;/g; var pr_ampEnt = /&amp;/g; var pr_nbspEnt = /&nbsp;/g; function htmlToText(html) { var pos = html.indexOf('&'); if (pos < 0) { return html; } for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0; ) { var end = html.indexOf(';', pos); if (end >= 0) { var num = html.substring(pos + 3, end); var radix = 10; if (num && num.charAt(0) === 'x') { num = num.substring(1); radix = 16; } var codePoint = parseInt(num, radix); if (!isNaN(codePoint)) { html = (html.substring(0, pos) + String.fromCharCode(codePoint) + html.substring(end + 1)); } } } return html.replace(pr_ltEnt, '<').replace(pr_gtEnt, '>').replace(pr_aposEnt, "'").replace(pr_quotEnt, '"').replace(pr_ampEnt, '&').replace(pr_nbspEnt, ' '); } function isRawContent(node) { return 'XMP' === node.tagName; } function normalizedHtml(node, out) { switch (node.nodeType) { case 1: var name = node.tagName.toLowerCase(); out.push('<', name); for (var i = 0; i < node.attributes.length; ++i) { var attr = node.attributes[i]; if (!attr.specified) { continue; } out.push(' '); normalizedHtml(attr, out); } out.push('>'); for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } if (node.firstChild || !/^(?:br|link|img)$/.test(name)) { out.push('<\/', name, '>'); } break; case 2: out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"'); break; case 3: case 4: out.push(textToHtml(node.nodeValue)); break; } } var PR_innerHtmlWorks = null; function getInnerHtml(node) { if (null === PR_innerHtmlWorks) { var testNode = document.createElement('PRE'); testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />')); PR_innerHtmlWorks = !/</.test(testNode.innerHTML); } if (PR_innerHtmlWorks) { var content = node.innerHTML; if (isRawContent(node)) { content = textToHtml(content); } return content; } var out = []; for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } return out.join(''); } function makeTabExpander(tabWidth) { var SPACES = ' '; var charInLine = 0; return function(plainText) { var out = null; var pos = 0; for (var i = 0, n = plainText.length; i < n; ++i) { var ch = plainText.charAt(i); switch (ch) { case '\t': if (!out) { out = []; } out.push(plainText.substring(pos, i)); var nSpaces = tabWidth - (charInLine % tabWidth); charInLine += nSpaces; for (; nSpaces >= 0; nSpaces -= SPACES.length) { out.push(SPACES.substring(0, nSpaces)); } pos = i + 1; break; case '\n': charInLine = 0; break; default: ++charInLine; } } if (!out) { return plainText; } out.push(plainText.substring(pos)); return out.join(''); }; } var pr_chunkPattern = /(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g; var pr_commentPrefix = /^<!--/; var pr_cdataPrefix = /^<\[CDATA\[/; var pr_brPrefix = /^<br\b/i; var pr_tagNameRe = /^<(\/?)([a-zA-Z]+)/; function extractTags(s) { var matches = s.match(pr_chunkPattern); var sourceBuf = []; var sourceBufLen = 0; var extractedTags = []; if (matches) { for (var i = 0, n = matches.length; i < n; ++i) { var match = matches[i]; if (match.length > 1 && match.charAt(0) === '<') { if (pr_commentPrefix.test(match)) { continue; } if (pr_cdataPrefix.test(match)) { sourceBuf.push(match.substring(9, match.length - 3)); sourceBufLen += match.length - 12; } else if (pr_brPrefix.test(match)) { sourceBuf.push('\n'); ++sourceBufLen; } else { if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) { var name = match.match(pr_tagNameRe)[2]; var depth = 1; end_tag_loop: for (var j = i + 1; j < n; ++j) { var name2 = matches[j].match(pr_tagNameRe); if (name2 && name2[2] === name) { if (name2[1] === '/') { if (--depth === 0) { break end_tag_loop; } } else { ++depth; } } } if (j < n) { extractedTags.push(sourceBufLen, matches.slice(i, j + 1).join('')); i = j; } else { extractedTags.push(sourceBufLen, match); } } else { extractedTags.push(sourceBufLen, match); } } } else { var literalText = htmlToText(match); sourceBuf.push(literalText); sourceBufLen += literalText.length; } } } return { source: sourceBuf.join(''), tags: extractedTags }; } function isNoCodeTag(tag) { return !!tag.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g, ' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/); } function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { var shortcuts = {}; (function() { var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); for (var i = allPatterns.length; --i >= 0; ) { var patternParts = allPatterns[i]; var shortcutChars = patternParts[3]; if (shortcutChars) { for (var c = shortcutChars.length; --c >= 0; ) { shortcuts[shortcutChars.charAt(c)] = patternParts; } } } })(); var nPatterns = fallthroughStylePatterns.length; var notWs = /\S/; return function(sourceCode, opt_basePos) { opt_basePos = opt_basePos || 0; var decorations = [opt_basePos, PR_PLAIN]; var lastToken = ''; var pos = 0; var tail = sourceCode; while (tail.length) { var style; var token = null; var match; var patternParts = shortcuts[tail.charAt(0)]; if (patternParts) { match = tail.match(patternParts[1]); token = match[0]; style = patternParts[0]; } else { for (var i = 0; i < nPatterns; ++i) { patternParts = fallthroughStylePatterns[i]; var contextPattern = patternParts[2]; if (contextPattern && !contextPattern.test(lastToken)) { continue; } match = tail.match(patternParts[1]); if (match) { token = match[0]; style = patternParts[0]; break; } } if (!token) { style = PR_PLAIN; token = tail.substring(0, 1); } } decorations.push(opt_basePos + pos, style); pos += token.length; tail = tail.substring(token.length); if (style !== PR_COMMENT && notWs.test(token)) { lastToken = token; } } return decorations; }; } var PR_MARKUP_LEXER = createSimpleLexer([], [[PR_PLAIN, /^[^<]+/, null], [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/, null], [PR_COMMENT, /^<!--[\s\S]*?(?:-->|$)/, null], [PR_SOURCE, /^<\?[\s\S]*?(?:\?>|$)/, null], [PR_SOURCE, /^<%[\s\S]*?(?:%>|$)/, null], [PR_SOURCE, /^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i, null], [PR_TAG, /^<\/?\w[^<>]*>/, null]]); var PR_SOURCE_CHUNK_PARTS = /^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/; function tokenizeMarkup(source) { var decorations = PR_MARKUP_LEXER(source); for (var i = 0; i < decorations.length; i += 2) { if (decorations[i + 1] === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var sourceChunk = source.substring(start, end); var match = sourceChunk.match(PR_SOURCE_CHUNK_PARTS); if (match) { decorations.splice(i, 2, start, PR_TAG, start + match[1].length, PR_SOURCE, start + match[1].length + (match[2] || '').length, PR_TAG); } } } return decorations; } var PR_TAG_LEXER = createSimpleLexer([[PR_ATTRIB_VALUE, /^\'[^\']*(?:\'|$)/, null, "'"], [PR_ATTRIB_VALUE, /^\"[^\"]*(?:\"|$)/, null, '"'], [PR_PUNCTUATION, /^[<>\/=]+/, null, '<>/=']], [[PR_TAG, /^[\w:\-]+/, /^</], [PR_ATTRIB_VALUE, /^[\w\-]+/, /^=/], [PR_ATTRIB_NAME, /^[\w:\-]+/, null], [PR_PLAIN, /^\s+/, null, ' \t\r\n']]); function splitTagAttributes(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_TAG) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var chunk = source.substring(start, end); var subDecorations = PR_TAG_LEXER(chunk, start); spliceArrayInto(subDecorations, decorations, i, 2); i += subDecorations.length - 2; } } return decorations; } function sourceDecorator(options) { var shortcutStylePatterns = [], fallthroughStylePatterns = []; if (options.tripleQuotedStrings) { shortcutStylePatterns.push([PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, null, '\'"']); } else if (options.multiLineStrings) { shortcutStylePatterns.push([PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, null, '\'"`']); } else { shortcutStylePatterns.push([PR_STRING, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, '"\'']); } fallthroughStylePatterns.push([PR_PLAIN, /^(?:[^\'\"\`\/\#]+)/, null, ' \r\n']); if (options.hashComments) { shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); } if (options.cStyleComments) { fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); fallthroughStylePatterns.push([PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); } if (options.regexLiterals) { var REGEX_LITERAL = ('^/(?=[^/*])' + '(?:[^/\\x5B\\x5C]' + '|\\x5C[\\s\\S]' + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' + '(?:/|$)'); fallthroughStylePatterns.push([PR_STRING, new RegExp(REGEX_LITERAL), REGEXP_PRECEDER_PATTERN]); } var keywords = wordSet(options.keywords); options = null; var splitStringAndCommentTokens = createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); var styleLiteralIdentifierPuncRecognizer = createSimpleLexer([], [[PR_PLAIN, /^\s+/, null, ' \r\n'], [PR_PLAIN, /^[a-z_$@][a-z_$@0-9]*/i, null], [PR_LITERAL, /^0x[a-f0-9]+[a-z]/i, null], [PR_LITERAL, /^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?[a-z]*/i, null, '123456789'], [PR_PUNCTUATION, /^[^\s\w\.$@]+/, null]]); function splitNonStringNonCommentTokens(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_PLAIN) { var start, end, chunk, subDecs; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; chunk = source.substring(start, end); subDecs = styleLiteralIdentifierPuncRecognizer(chunk, start); for (var j = 0, m = subDecs.length; j < m; j += 2) { var subStyle = subDecs[j + 1]; if (subStyle === PR_PLAIN) { var subStart = subDecs[j]; var subEnd = j + 2 < m ? subDecs[j + 2] : chunk.length; var token = source.substring(subStart, subEnd); if (token === '.') { subDecs[j + 1] = PR_PUNCTUATION; } else if (token in keywords) { subDecs[j + 1] = PR_KEYWORD; } else if (/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)) { subDecs[j + 1] = token.charAt(0) === '@' ? PR_LITERAL : PR_TYPE; } } } spliceArrayInto(subDecs, decorations, i, 2); i += subDecs.length - 2; } } return decorations; } return function(sourceCode) { var decorations = splitStringAndCommentTokens(sourceCode); decorations = splitNonStringNonCommentTokens(sourceCode, decorations); return decorations; }; } var decorateSource = sourceDecorator({ keywords: ALL_KEYWORDS, hashComments: true, cStyleComments: true, multiLineStrings: true, regexLiterals: true }); function splitSourceNodes(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var subDecorations = decorateSource(source.substring(start, end)); for (var j = 0, m = subDecorations.length; j < m; j += 2) { subDecorations[j] += start; } spliceArrayInto(subDecorations, decorations, i, 2); i += subDecorations.length - 2; } } return decorations; } function splitSourceAttributes(source, decorations) { var nextValueIsSource = false; for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; var start, end; if (style === PR_ATTRIB_NAME) { start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; nextValueIsSource = /^on|^style$/i.test(source.substring(start, end)); } else if (style === PR_ATTRIB_VALUE) { if (nextValueIsSource) { start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var attribValue = source.substring(start, end); var attribLen = attribValue.length; var quoted = (attribLen >= 2 && /^[\"\']/.test(attribValue) && attribValue.charAt(0) === attribValue.charAt(attribLen - 1)); var attribSource; var attribSourceStart; var attribSourceEnd; if (quoted) { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue; } else { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue.substring(1, attribValue.length - 1); } var attribSourceDecorations = decorateSource(attribSource); for (var j = 0, m = attribSourceDecorations.length; j < m; j += 2) { attribSourceDecorations[j] += attribSourceStart; } if (quoted) { attribSourceDecorations.push(attribSourceEnd, PR_ATTRIB_VALUE); spliceArrayInto(attribSourceDecorations, decorations, i + 2, 0); } else { spliceArrayInto(attribSourceDecorations, decorations, i, 2); } } nextValueIsSource = false; } } return decorations; } function decorateMarkup(sourceCode) { var decorations = tokenizeMarkup(sourceCode); decorations = splitTagAttributes(sourceCode, decorations); decorations = splitSourceNodes(sourceCode, decorations); decorations = splitSourceAttributes(sourceCode, decorations); return decorations; } function recombineTagsAndDecorations(sourceText, extractedTags, decorations) { var html = []; var outputIdx = 0; var openDecoration = null; var currentDecoration = null; var tagPos = 0; var decPos = 0; var tabExpander = makeTabExpander(PR_TAB_WIDTH); var adjacentSpaceRe = /([\r\n ]) /g; var startOrSpaceRe = /(^| ) /gm; var newlineRe = /\r\n?|\n/g; var trailingSpaceRe = /[ \r\n]$/; var lastWasSpace = true; function emitTextUpTo(sourceIdx) { if (sourceIdx > outputIdx) { if (openDecoration && openDecoration !== currentDecoration) { html.push('</span>'); openDecoration = null; } if (!openDecoration && currentDecoration) { openDecoration = currentDecoration; html.push('<span class="', openDecoration, '">'); } var htmlChunk = textToHtml(tabExpander(sourceText.substring(outputIdx, sourceIdx))).replace(lastWasSpace ? startOrSpaceRe : adjacentSpaceRe, '$1&nbsp;'); lastWasSpace = trailingSpaceRe.test(htmlChunk); html.push(htmlChunk.replace(newlineRe, '<br />')); outputIdx = sourceIdx; } } while (true) { var outputTag; if (tagPos < extractedTags.length) { if (decPos < decorations.length) { outputTag = extractedTags[tagPos] <= decorations[decPos]; } else { outputTag = true; } } else { outputTag = false; } if (outputTag) { emitTextUpTo(extractedTags[tagPos]); if (openDecoration) { html.push('</span>'); openDecoration = null; } html.push(extractedTags[tagPos + 1]); tagPos += 2; } else if (decPos < decorations.length) { emitTextUpTo(decorations[decPos]); currentDecoration = decorations[decPos + 1]; decPos += 2; } else { break; } } emitTextUpTo(sourceText.length); if (openDecoration) { html.push('</span>'); } return html.join(''); } var langHandlerRegistry = {}; function registerLangHandler(handler, fileExtensions) { for (var i = fileExtensions.length; --i >= 0; ) { var ext = fileExtensions[i]; if (!langHandlerRegistry.hasOwnProperty(ext)) { langHandlerRegistry[ext] = handler; } else if ('console' in window) { console.log('cannot override language handler %s', ext); } } } registerLangHandler(decorateSource, ['default-code']); registerLangHandler(decorateMarkup, ['default-markup', 'html', 'htm', 'xhtml', 'xml', 'xsl']); registerLangHandler(sourceDecorator({ keywords: CPP_KEYWORDS, hashComments: true, cStyleComments: true }), ['c', 'cc', 'cpp', 'cs', 'cxx', 'cyc']); registerLangHandler(sourceDecorator({ keywords: JAVA_KEYWORDS, cStyleComments: true }), ['java']); registerLangHandler(sourceDecorator({ keywords: SH_KEYWORDS, hashComments: true, multiLineStrings: true }), ['bsh', 'csh', 'sh']); registerLangHandler(sourceDecorator({ keywords: PYTHON_KEYWORDS, hashComments: true, multiLineStrings: true, tripleQuotedStrings: true }), ['cv', 'py']); registerLangHandler(sourceDecorator({ keywords: PERL_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['perl', 'pl', 'pm']); registerLangHandler(sourceDecorator({ keywords: RUBY_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['rb']); registerLangHandler(sourceDecorator({ keywords: JSCRIPT_KEYWORDS, cStyleComments: true, regexLiterals: true }), ['js']); function prettyPrintOne(sourceCodeHtml, opt_langExtension) { try { var sourceAndExtractedTags = extractTags(sourceCodeHtml); var source = sourceAndExtractedTags.source; var extractedTags = sourceAndExtractedTags.tags; if (!langHandlerRegistry.hasOwnProperty(opt_langExtension)) { opt_langExtension = /^\s*</.test(source) ? 'default-markup' : 'default-code'; } var decorations = langHandlerRegistry[opt_langExtension].call({}, source); return recombineTagsAndDecorations(source, extractedTags, decorations); } catch (e) { if ('console' in window) { console.log(e); console.trace(); } return sourceCodeHtml; } } function prettyPrint(opt_whenDone) { var isIE6 = _pr_isIE6(); var codeSegments = [document.getElementsByTagName('pre'), document.getElementsByTagName('code'), document.getElementsByTagName('xmp')]; var elements = []; for (var i = 0; i < codeSegments.length; ++i) { for (var j = 0; j < codeSegments[i].length; ++j) { elements.push(codeSegments[i][j]); } } codeSegments = null; var k = 0; function doWork() { var endTime = (PR_SHOULD_USE_CONTINUATION ? new Date().getTime() + 250 : Infinity); for (; k < elements.length && new Date().getTime() < endTime; k++) { var cs = elements[k]; if (cs.className && cs.className.indexOf('prettyprint') >= 0) { var langExtension = cs.className.match(/\blang-(\w+)\b/); if (langExtension) { langExtension = langExtension[1]; } var nested = false; for (var p = cs.parentNode; p; p = p.parentNode) { if ((p.tagName === 'pre' || p.tagName === 'code' || p.tagName === 'xmp') && p.className && p.className.indexOf('prettyprint') >= 0) { nested = true; break; } } if (!nested) { var content = getInnerHtml(cs); content = content.replace(/(?:\r\n?|\n)$/, ''); var newContent = prettyPrintOne(content, langExtension); if (!isRawContent(cs)) { cs.innerHTML = newContent; } else { var pre = document.createElement('PRE'); for (var i = 0; i < cs.attributes.length; ++i) { var a = cs.attributes[i]; if (a.specified) { var aname = a.name.toLowerCase(); if (aname === 'class') { pre.className = a.value; } else { pre.setAttribute(a.name, a.value); } } } pre.innerHTML = newContent; cs.parentNode.replaceChild(pre, cs); cs = pre; } if (isIE6 && cs.tagName === 'PRE') { var lineBreaks = cs.getElementsByTagName('br'); for (var j = lineBreaks.length; --j >= 0; ) { var lineBreak = lineBreaks[j]; lineBreak.parentNode.replaceChild(document.createTextNode('\r\n'), lineBreak); } } } } } if (k < elements.length) { setTimeout(doWork, 250); } else if (opt_whenDone) { opt_whenDone(); } } doWork(); } window['PR_normalizedHtml'] = normalizedHtml; window['prettyPrintOne'] = prettyPrintOne; window['prettyPrint'] = prettyPrint; window['PR'] = { 'createSimpleLexer': createSimpleLexer, 'registerLangHandler': registerLangHandler, 'sourceDecorator': sourceDecorator, 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, 'PR_COMMENT': PR_COMMENT, 'PR_DECLARATION': PR_DECLARATION, 'PR_KEYWORD': PR_KEYWORD, 'PR_LITERAL': PR_LITERAL, 'PR_NOCODE': PR_NOCODE, 'PR_PLAIN': PR_PLAIN, 'PR_PUNCTUATION': PR_PUNCTUATION, 'PR_SOURCE': PR_SOURCE, 'PR_STRING': PR_STRING, 'PR_TAG': PR_TAG, 'PR_TYPE': PR_TYPE }; })();
diff --git a/askbot/skins/default/media/js/se_hilite.js b/askbot/skins/common/media/js/se_hilite.js
index 42e99c8e..42e99c8e 100644
--- a/askbot/skins/default/media/js/se_hilite.js
+++ b/askbot/skins/common/media/js/se_hilite.js
diff --git a/askbot/skins/default/media/js/se_hilite_src.js b/askbot/skins/common/media/js/se_hilite_src.js
index b604f156..b604f156 100644
--- a/askbot/skins/default/media/js/se_hilite_src.js
+++ b/askbot/skins/common/media/js/se_hilite_src.js
diff --git a/askbot/skins/default/media/js/tag_selector.js b/askbot/skins/common/media/js/tag_selector.js
index 659c157b..659c157b 100644
--- a/askbot/skins/default/media/js/tag_selector.js
+++ b/askbot/skins/common/media/js/tag_selector.js
diff --git a/askbot/skins/common/media/js/user.js b/askbot/skins/common/media/js/user.js
new file mode 100644
index 00000000..d80adad6
--- /dev/null
+++ b/askbot/skins/common/media/js/user.js
@@ -0,0 +1,181 @@
+$(document).ready(function(){
+
+ var getSelected = function(){
+
+ var id_list = new Array();
+ var elements = $('#responses input:checked').parent();
+
+ elements.each(function(index, element){
+ var id = $(element).attr('id').replace(/^re_/,'');
+ id_list.push(id);
+ });
+
+ if (id_list.length === 0){
+ alert(gettext('Please select at least one item'));
+ }
+
+ return {id_list: id_list, elements: elements};
+ };
+
+ var submit = function(id_list, elements, action_type){
+ if (action_type == 'delete' || action_type == 'mark_new' || action_type == 'mark_seen'){
+ $.ajax({
+ type: 'POST',
+ cache: false,
+ dataType: 'json',
+ 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'){
+ elements.remove();
+ }
+ else if (action_type == 'mark_new'){
+ elements.addClass('highlight');
+ elements.addClass('new');
+ elements.removeClass('seen');
+ }
+ else if (action_type == 'mark_seen'){
+ elements.removeClass('highlight');
+ elements.addClass('seen');
+ elements.removeClass('new');
+ }
+ }
+ else {
+ showMessage($('#responses'), response_data['message']);
+ }
+ }
+ });
+ }
+ };
+
+ var startAction = function(action_type){
+ var data = getSelected();
+ if (data['id_list'].length === 0){
+ return;
+ }
+ if (action_type == 'delete'){
+ msg = ngettext('Delete this notification?',
+ 'Delete these notifications?', 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(
+ $('#sel_all'),
+ function(){
+ setCheckBoxesIn('#responses .new', true);
+ setCheckBoxesIn('#responses .seen', true);
+ }
+ );
+ setupButtonEventHandlers(
+ $('#sel_seen'),
+ function(){
+ setCheckBoxesIn('#responses .seen', true);
+ }
+ );
+ setupButtonEventHandlers(
+ $('#sel_new'),
+ function(){
+ setCheckBoxesIn('#responses .new', true);
+ }
+ );
+ setupButtonEventHandlers(
+ $('#sel_none'),
+ function(){
+ setCheckBoxesIn('#responses .new', false);
+ setCheckBoxesIn('#responses .seen', false);
+ }
+ );
+});
+
+/**
+ * @constructor
+ * allows to follow/unfollow users
+ */
+var FollowUser = function(){
+ WrappedElement.call(this);
+ this._user_id = null;
+ this._user_name = null;
+};
+inherits(FollowUser, WrappedElement);
+
+/**
+ * @param {string} user_name
+ */
+FollowUser.prototype.setUserName = function(user_name){
+ this._user_name = user_name;
+};
+
+FollowUser.prototype.decorate = function(element){
+ this._element = element;
+ this._user_id = parseInt(element.attr('id').split('-').pop());
+ this._available_action = element.children().hasClass('follow') ? 'follow':'unfollow';
+ var me = this;
+ setupButtonEventHandlers(this._element, function(){ me.go() });
+};
+
+FollowUser.prototype.go = function(){
+ if (askbot['data']['userIsAuthenticated'] === false){
+ var message = gettext('Please <a href="%(signin_url)s">signin</a> to follow %(username)s');
+ var message_data = {
+ signin_url: askbot['urls']['user_signin'] + '?next=' + window.location.href,
+ username: this._user_name
+ }
+ message = interpolate(message, message_data, true);
+ showMessage(this._element, message);
+ return;
+ }
+ var user_id = this._user_id;
+ if (this._available_action === 'follow'){
+ var url = askbot['urls']['follow_user'];
+ } else {
+ var url = askbot['urls']['unfollow_user'];
+ }
+ var me = this;
+ $.ajax({
+ type: 'POST',
+ cache: false,
+ dataType: 'json',
+ url: url.replace('{{userId}}', user_id),
+ success: function(){ me.toggleState() }
+ });
+};
+
+FollowUser.prototype.toggleState = function(){
+ if (this._available_action === 'follow'){
+ this._available_action = 'unfollow';
+ var unfollow_div = document.createElement('div');
+ unfollow_div.setAttribute('class', 'unfollow');
+ var red_div = document.createElement('div');
+ red_div.setAttribute('class', 'unfollow-red');
+ red_div.innerHTML = interpolate(gettext('unfollow %s'), [this._user_name]);
+ var green_div = document.createElement('div');
+ green_div.setAttribute('class', 'unfollow-green');
+ green_div.innerHTML = interpolate(gettext('following %s'), [this._user_name]);
+ unfollow_div.appendChild(red_div);
+ unfollow_div.appendChild(green_div);
+ this._element.html(unfollow_div);
+ } else {
+ var follow_div = document.createElement('div');
+ follow_div.innerHTML = interpolate(gettext('follow %s'), [this._user_name]);
+ follow_div.setAttribute('class', 'follow');
+ this._available_action = 'follow';
+ this._element.html(follow_div);
+ }
+};
+
+(function(){
+ var fbtn = $('.follow-toggle');
+ if (fbtn.length === 1){
+ var follow_user = new FollowUser();
+ follow_user.decorate(fbtn);
+ follow_user.setUserName(askbot['data']['viewUserName']);
+ }
+})();
+
diff --git a/askbot/skins/common/media/js/utils.js b/askbot/skins/common/media/js/utils.js
new file mode 100644
index 00000000..0afd03a7
--- /dev/null
+++ b/askbot/skins/common/media/js/utils.js
@@ -0,0 +1,400 @@
+//var $, scriptUrl, askbotSkin
+var mediaUrl = function(resource){
+ return scriptUrl + 'm/' + askbotSkin + '/' + resource;
+};
+
+var cleanUrl = function(url){
+ var re = new RegExp('//', 'g');
+ return url.replace(re, '/');
+};
+
+var copyAltToTitle = function(sel){
+ sel.attr('title', sel.attr('alt'));
+};
+
+var animateHashes = function(){
+ var id_value = window.location.hash;
+ if (id_value != ""){
+ var previous_color = $(id_value).css('background-color');
+ $(id_value).css('backgroundColor', '#FFF8C6');
+ $(id_value)
+ .animate({backgroundColor: '#ff7f2a'}, 500)
+ .animate({backgroundColor: '#FFF8C6'}, 500, function(){
+ $(id_value).css('backgroundColor', previous_color);
+ });
+ }
+};
+
+var getUniqueWords = function(value){
+ var words = $.trim(value).split(/\s+/);
+ var uniques = new Object();
+ var out = new Array();
+ $.each(words, function(idx, item){
+ if (!(item in uniques)){
+ uniques[item] = 1;
+ out.push(item);
+ };
+ });
+ return out;
+};
+
+var showMessage = function(element, msg, where) {
+ var div = $('<div class="vote-notification"><h3>' + msg + '</h3>(' +
+ gettext('click to close') + ')</div>');
+
+ div.click(function(event) {
+ $(".vote-notification").fadeOut("fast", function() { $(this).remove(); });
+ });
+
+ var where = where || 'parent';
+
+ if (where == 'parent'){
+ element.parent().append(div);
+ }
+ else {
+ element.after(div);
+ }
+
+ div.fadeIn("fast");
+};
+
+//outer html hack - https://github.com/brandonaaron/jquery-outerhtml/
+(function($){
+ var div;
+ $.fn.outerHTML = function() {
+ var elem = this[0],
+ tmp;
+ return !elem ? null
+ : typeof ( tmp = elem.outerHTML ) === 'string' ? tmp
+ : ( div = div || $('<div/>') ).html( this.eq(0).clone() ).html();
+ };
+})(jQuery);
+
+var makeKeyHandler = function(key, callback){
+ return function(e){
+ if ((e.which && e.which == key) || (e.keyCode && e.keyCode == key)){
+ if(!e.shiftKey){
+ callback();
+ return false;
+ }
+ }
+ };
+};
+
+
+var setupButtonEventHandlers = function(button, callback){
+ button.keydown(makeKeyHandler(13, callback));
+ button.click(callback);
+};
+
+
+var putCursorAtEnd = function(element){
+ var el = element.get()[0];
+ if (el.setSelectionRange){
+ var len = element.val().length * 2;
+ el.setSelectionRange(len, len);
+ }
+ else{
+ element.val(element.val());
+ }
+ element.scrollTop = 999999;
+};
+
+var setCheckBoxesIn = function(selector, value){
+ return $(selector + '> input[type=checkbox]').attr('checked', value);
+};
+
+var notify = function() {
+ var visible = false;
+ return {
+ show: function(html) {
+ if (html) {
+ $("body").css("margin-top", "2.2em");
+ $(".notify span").html(html);
+ }
+ $(".notify").fadeIn("slow");
+ visible = true;
+ },
+ close: function(doPostback) {
+ if (doPostback) {
+ $.post(
+ askbot['urls']['mark_read_message'],
+ { formdata: "required" }
+ );
+ }
+ $(".notify").fadeOut("fast");
+ $("body").css("margin-top", "0");
+ visible = false;
+ },
+ isVisible: function() { return visible; }
+ };
+} ();
+
+/* some google closure-like code for the ui elements */
+var inherits = function(childCtor, parentCtor) {
+ /** @constructor taken from google closure */
+ function tempCtor() {};
+ tempCtor.prototype = parentCtor.prototype;
+ childCtor.superClass_ = parentCtor.prototype;
+ childCtor.prototype = new tempCtor();
+ childCtor.prototype.constructor = childCtor;
+};
+
+/* wrapper around jQuery object */
+var WrappedElement = function(){
+ this._element = null;
+ this._in_document = false;
+};
+WrappedElement.prototype.setElement = function(element){
+ this._element = element;
+};
+WrappedElement.prototype.createDom = function(){
+ this._element = $('<div></div>');
+};
+WrappedElement.prototype.getElement = function(){
+ if (this._element === null){
+ this.createDom();
+ }
+ return this._element;
+};
+WrappedElement.prototype.inDocument = function(){
+ return this._in_document;
+};
+WrappedElement.prototype.enterDocument = function(){
+ return this._in_document = true;
+};
+WrappedElement.prototype.hasElement = function(){
+ return (this._element !== null);
+};
+WrappedElement.prototype.makeElement = function(html_tag){
+ //makes jQuery element with tags
+ return $('<' + html_tag + '></' + html_tag + '>');
+};
+WrappedElement.prototype.dispose = function(){
+ this._element.remove();
+ this._in_document = false;
+};
+
+var SimpleControl = function(){
+ WrappedElement.call(this);
+ this._handler = null;
+ this._title = null;
+};
+inherits(SimpleControl, WrappedElement);
+
+SimpleControl.prototype.setHandler = function(handler){
+ this._handler = handler;
+ if (this.hasElement()){
+ this.setHandlerInternal();
+ }
+};
+
+SimpleControl.prototype.setHandlerInternal = function(){
+ //default internal setHandler behavior
+ setupButtonEventHandlers(this._element, this._handler);
+};
+
+SimpleControl.prototype.setTitle = function(title){
+ this._title = title;
+};
+
+var EditLink = function(){
+ SimpleControl.call(this)
+};
+inherits(EditLink, SimpleControl);
+
+EditLink.prototype.createDom = function(){
+ var element = $('<a></a>');
+ element.addClass('edit');
+ this.decorate(element);
+};
+
+EditLink.prototype.decorate = function(element){
+ this._element = element;
+ this._element.attr('title', gettext('click to edit this comment'));
+ this._element.html(gettext('edit'));
+ this.setHandlerInternal();
+};
+
+var DeleteIcon = function(title){
+ SimpleControl.call(this);
+ this._title = title;
+};
+inherits(DeleteIcon, SimpleControl);
+
+DeleteIcon.prototype.decorate = function(element){
+ this._element = element;
+ this._element.attr('class', 'delete-icon');
+ this._element.attr('title', this._title);
+ if (this._handler !== null){
+ this.setHandlerInternal();
+ }
+};
+
+DeleteIcon.prototype.setHandlerInternal = function(){
+ setupButtonEventHandlers(this._element, this._handler);
+};
+
+DeleteIcon.prototype.createDom = function(){
+ this._element = this.makeElement('span');
+ this.decorate(this._element);
+};
+
+var Tag = function(){
+ SimpleControl.call(this);
+ this._deletable = false;
+ this._delete_handler = null;
+ this._delete_icon_title = null;
+ this._tag_title = null;
+ this._name = null;
+ this._url_params = null;
+ this._inner_html_tag = 'a';
+ this._html_tag = 'li';
+}
+inherits(Tag, SimpleControl);
+
+Tag.prototype.setName = function(name){
+ this._name = name;
+};
+
+Tag.prototype.getName = function(){
+ return this._name;
+};
+
+Tag.prototype.setHtmlTag = function(html_tag){
+ this._html_tag = html_tag;
+};
+
+Tag.prototype.setDeletable = function(is_deletable){
+ this._deletable = is_deletable;
+};
+
+Tag.prototype.setLinkable = function(is_linkable){
+ if (is_linkable === true){
+ this._inner_html_tag = 'a';
+ } else {
+ this._inner_html_tag = 'span';
+ }
+};
+
+Tag.prototype.isLinkable = function(){
+ return (this._inner_html_tag === 'a');
+};
+
+Tag.prototype.isDeletable = function(){
+ return this._deletable;
+};
+
+Tag.prototype.isWildcard = function(){
+ return (this.getName().substr(-1) === '*');
+};
+
+Tag.prototype.setUrlParams = function(url_params){
+ this._url_params = url_params;
+};
+
+Tag.prototype.setHandlerInternal = function(){
+ setupButtonEventHandlers(this._element.find('.tag'), this._handler);
+};
+
+/* delete handler will be specific to the task */
+Tag.prototype.setDeleteHandler = function(delete_handler){
+ this._delete_handler = delete_handler;
+ if (this.hasElement() && this.isDeletable()){
+ this._delete_icon.setHandler(delete_handler);
+ }
+};
+
+Tag.prototype.getDeleteHandler = function(){
+ return this._delete_handler;
+};
+
+Tag.prototype.setDeleteIconTitle = function(title){
+ this._delete_icon_title = title;
+};
+
+Tag.prototype.decorate = function(element){
+ this._element = element;
+ var del = element.find('.delete-icon');
+ if (del.length === 1){
+ this.setDeletable(true);
+ this._delete_icon = new DeleteIcon();
+ if (this._delete_icon_title != null){
+ this._delete_icon.setTitle(this._delete_icon_title);
+ }
+ //do not set the delete handler here
+ this._delete_icon.decorate(del);
+ }
+ this._inner_element = this._element.find('.tag');
+ this._name = this.decodeTagName($.trim(this._inner_element.html()));
+ if (this._title !== null){
+ this._inner_element.attr('title', this._title);
+ }
+ if (this._handler !== null){
+ this.setHandlerInternal();
+ }
+};
+
+Tag.prototype.getDisplayTagName = function(){
+ //replaces the trailing * symbol with the unicode asterisk
+ return this._name.replace(/\*$/, '&#10045;');
+};
+
+Tag.prototype.decodeTagName = function(encoded_name){
+ return encoded_name.replace('\u273d', '*');
+};
+
+Tag.prototype.createDom = function(){
+ this._element = this.makeElement(this._html_tag);
+ //render the outer element
+ if (this._deletable){
+ this._element.addClass('deletable-tag');
+ }
+ this._element.addClass('tag-left');
+
+ //render the inner element
+ 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);
+ }
+ this._inner_element.attr('href', url);
+ }
+ this._inner_element.addClass('tag tag-right');
+ this._inner_element.attr('rel', 'tag');
+ if (this._title === null){
+ this.setTitle(
+ interpolate(gettext("see questions tagged '%s'"), [this.getName()])
+ );
+ }
+ this._inner_element.attr('title', this._title);
+ this._inner_element.html(this.getDisplayTagName());
+
+ this._element.append(this._inner_element);
+
+ if (!this.isLinkable() && this._handler !== null){
+ this.setHandlerInternal();
+ }
+
+ if (this._deletable){
+ this._delete_icon = new DeleteIcon();
+ this._delete_icon.setHandler(this.getDeleteHandler());
+ if (this._delete_icon_title !== null){
+ this._delete_icon.setTitle(this._delete_icon_title);
+ }
+ this._element.append(this._delete_icon.getElement());
+ }
+};
+
+//Search Engine Keyword Highlight with Javascript
+//http://scott.yang.id.au/code/se-hilite/
+Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["local","q"],["cnprog\\.","q"],["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c<Hilite.search_engines.length;c++){var f=Hilite.search_engines[c];e.compile("^http://(www\\.)?"+f[0],"i");var b=d.match(e);if(b){var a;if(isNaN(f[1])){a=Hilite.decodeReferrerQS(d,f[1])}else{a=b[f[1]+1]}if(a){a=decodeURIComponent(a);if(f.length>2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b<e.length;b++){e[b]=e[b].toLowerCase();if(Hilite.exact){c.push("\\b"+e[b]+"\\b")}else{c.push(e[b])}}c=new RegExp(c.join("|"),"i");var a={};for(var b=0;b<e.length;b++){if(Hilite.style_name_suffix){a[e[b]]=Hilite.style_name+(b+1)}else{a[e[b]]=Hilite.style_name}}var d=function(m){var j=c.exec(m.data);if(j){var n=j[0];var i="";var h=m.splitText(j.index);var g=h.splitText(n.length);var l=m.ownerDocument.createElement("SPAN");m.parentNode.replaceChild(l,h);l.className=a[n.toLowerCase()];l.appendChild(h);return l}else{return m}};Hilite.walkElements(f.childNodes[0],1,d)};Hilite.hilite=function(){var a=Hilite.debug_referrer?Hilite.debug_referrer:document.referrer;var b=null;a=Hilite.decodeReferrer(a);if(a&&((Hilite.elementid&&(b=document.getElementById(Hilite.elementid)))||(b=document.body))){Hilite.hiliteElement(b,a)}};Hilite.walkElements=function(d,f,e){var a=/^(script|style|textarea)/i;var c=0;while(d&&f>0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}};
+/* json2.js by D. Crockford */
+if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){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(key){return this.valueOf()}}var 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;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(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,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
+//jquery fieldselection
+(function(){var a={getSelection:function(){var b=this.jquery?this[0]:this;return(("selectionStart" in b&&function(){var c=b.selectionEnd-b.selectionStart;return{start:b.selectionStart,end:b.selectionEnd,length:c,text:b.value.substr(b.selectionStart,c)}})||(document.selection&&function(){b.focus();var d=document.selection.createRange();if(d==null){return{start:0,end:b.value.length,length:0}}var c=b.createTextRange();var e=c.duplicate();c.moveToBookmark(d.getBookmark());e.setEndPoint("EndToStart",c);return{start:e.text.length,end:e.text.length+d.text.length,length:d.text.length,text:d.text}})||function(){return{start:0,end:b.value.length,length:0}})()},replaceSelection:function(){var b=this.jquery?this[0]:this;var c=arguments[0]||"";return(("selectionStart" in b&&function(){b.value=b.value.substr(0,b.selectionStart)+c+b.value.substr(b.selectionEnd,b.value.length);return this})||(document.selection&&function(){b.focus();document.selection.createRange().text=c;return this})||function(){b.value+=c;return this})()}};jQuery.each(a,function(b){jQuery.fn[b]=this})})();
+//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);
diff --git a/askbot/skins/common/media/js/wmd/images/editor-toolbar-background.png b/askbot/skins/common/media/js/wmd/images/editor-toolbar-background.png
new file mode 100644
index 00000000..41875962
--- /dev/null
+++ b/askbot/skins/common/media/js/wmd/images/editor-toolbar-background.png
Binary files differ
diff --git a/askbot/skins/default/media/js/wmd/images/wmd-buttons.png b/askbot/skins/common/media/js/wmd/images/wmd-buttons.png
index 3013a4ad..3013a4ad 100755
--- a/askbot/skins/default/media/js/wmd/images/wmd-buttons.png
+++ b/askbot/skins/common/media/js/wmd/images/wmd-buttons.png
Binary files differ
diff --git a/askbot/skins/default/media/js/wmd/showdown-min.js b/askbot/skins/common/media/js/wmd/showdown-min.js
index 073613b1..073613b1 100644
--- a/askbot/skins/default/media/js/wmd/showdown-min.js
+++ b/askbot/skins/common/media/js/wmd/showdown-min.js
diff --git a/askbot/skins/default/media/js/wmd/showdown.js b/askbot/skins/common/media/js/wmd/showdown.js
index 257b8bd1..257b8bd1 100644
--- a/askbot/skins/default/media/js/wmd/showdown.js
+++ b/askbot/skins/common/media/js/wmd/showdown.js
diff --git a/askbot/skins/default/media/js/wmd/wmd-min.js b/askbot/skins/common/media/js/wmd/wmd-min.js
index aa643f1a..aa643f1a 100644
--- a/askbot/skins/default/media/js/wmd/wmd-min.js
+++ b/askbot/skins/common/media/js/wmd/wmd-min.js
diff --git a/askbot/skins/default/media/js/wmd/wmd-test.html b/askbot/skins/common/media/js/wmd/wmd-test.html
index d748501a..d748501a 100644
--- a/askbot/skins/default/media/js/wmd/wmd-test.html
+++ b/askbot/skins/common/media/js/wmd/wmd-test.html
diff --git a/askbot/skins/common/media/js/wmd/wmd.css b/askbot/skins/common/media/js/wmd/wmd.css
new file mode 100644
index 00000000..3ad615e7
--- /dev/null
+++ b/askbot/skins/common/media/js/wmd/wmd.css
@@ -0,0 +1,136 @@
+/*body
+{
+ background-color: White
+}
+*/
+.wmd-panel
+{
+}
+
+#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;
+}
+
+#wmd-input
+{
+ height: 500px;
+ background-color: Gainsboro;
+ border: 1px solid DarkGray;
+ margin-top: -20px;
+}
+
+#wmd-preview
+{
+ background-color: LightSkyBlue;
+}
+
+#wmd-output
+{
+ background-color: Pink;
+}
+
+#wmd-button-row
+{
+ position: relative;
+ margin-left: 5px;
+ margin-right: 5px;
+ margin-bottom: 0px;
+ margin-top: 10px;
+ padding: 0px;
+ height: 20px;
+}
+
+.wmd-spacer
+{
+ width: 1px;
+ height: 20px;
+ margin-left: 14px;
+
+ position: absolute;
+ background-color: Silver;
+ display: inline-block;
+ list-style: none;
+}
+
+.wmd-button
+{
+ width: 20px;
+ height: 20px;
+ margin-left: 5px;
+ margin-right: 5px;
+
+ position: absolute;
+ background-image: url(images/wmd-buttons.png);
+ background-repeat: no-repeat;
+ background-position: 0px 0px;
+ display: inline-block;
+ list-style: none;
+}
+
+.wmd-button > a
+{
+ width: 20px;
+ height: 20px;
+ margin-left: 5px;
+ margin-right: 5px;
+
+ position: absolute;
+ display: inline-block;
+}
+
+
+/* sprite button slicing style information */
+#wmd-button-bar #wmd-bold-button {left: 0px; background-position: 0px 0;}
+#wmd-button-bar #wmd-italic-button {left: 25px; background-position: -20px 0;}
+#wmd-button-bar #wmd-spacer1 {left: 50px;}
+#wmd-button-bar #wmd-link-button {left: 75px; background-position: -40px 0;}
+#wmd-button-bar #wmd-quote-button {left: 100px; background-position: -60px 0;}
+#wmd-button-bar #wmd-code-button {left: 125px; background-position: -80px 0;}
+#wmd-button-bar #wmd-image-button {left: 150px; background-position: -100px 0;}
+#wmd-button-bar #wmd-attachment-button {left: 175px; background-position: -120px 0;}
+#wmd-button-bar #wmd-spacer2 {left: 200px;}
+#wmd-button-bar #wmd-olist-button {left: 225px; background-position: -140px 0;}
+#wmd-button-bar #wmd-ulist-button {left: 250px; background-position: -160px 0;}
+#wmd-button-bar #wmd-heading-button {left: 275px; background-position: -180px 0;}
+#wmd-button-bar #wmd-hr-button {left: 300px; background-position: -200px 0;}
+#wmd-button-bar #wmd-spacer3 {left: 325px;}
+#wmd-button-bar #wmd-undo-button {left: 350px; background-position: -220px 0;}
+#wmd-button-bar #wmd-redo-button {left: 375px; background-position: -240px 0;}
+#wmd-button-bar #wmd-help-button {right: 0px; background-position: -260px 0;}
+
+
+.wmd-prompt-background
+{
+ background-color: Black;
+}
+
+.wmd-prompt-dialog
+{
+ border: 1px solid #999999;
+ background-color: #F5F5F5;
+}
+
+.wmd-prompt-dialog > div {
+ font-size: 1em;
+ font-family: arial, helvetica, sans-serif;
+}
+
+
+.wmd-prompt-dialog > form > input[type="text"] {
+ border: 1px solid #999999;
+ color: black;
+}
+
+.wmd-prompt-dialog > form > input[type="button"]{
+ border: 1px solid #888888;
+ font-family: trebuchet MS, helvetica, sans-serif;
+ font-size: 1em;
+ font-weight: bold;
+}
diff --git a/askbot/skins/common/media/js/wmd/wmd.js b/askbot/skins/common/media/js/wmd/wmd.js
new file mode 100644
index 00000000..1d524361
--- /dev/null
+++ b/askbot/skins/common/media/js/wmd/wmd.js
@@ -0,0 +1,2438 @@
+var Attacklab = Attacklab || {};
+
+Attacklab.wmdBase = function(){
+
+ // A few handy aliases for readability.
+ var wmd = top.Attacklab;
+ var doc = top.document;
+ var re = top.RegExp;
+ var nav = top.navigator;
+
+ // Some namespaces.
+ wmd.Util = {};
+ wmd.Position = {};
+ wmd.Command = {};
+ wmd.Global = {};
+
+ var util = wmd.Util;
+ var position = wmd.Position;
+ var command = wmd.Command;
+ var global = wmd.Global;
+
+
+ // Used to work around some browser bugs where we can't use feature testing.
+ global.isIE = /msie/.test(nav.userAgent.toLowerCase());
+ global.isIE_5or6 = /msie 6/.test(nav.userAgent.toLowerCase()) || /msie 5/.test(nav.userAgent.toLowerCase());
+ global.isIE_7plus = global.isIE && !global.isIE_5or6;
+ global.isOpera = /opera/.test(nav.userAgent.toLowerCase());
+ global.isKonqueror = /konqueror/.test(nav.userAgent.toLowerCase());
+
+ var toolbar_strong_label = gettext('bold') + " <strong> Ctrl-B";
+ var toolbar_emphasis_label = gettext('italic') + " <em> Ctrl-I";
+ var toolbar_hyperlink_label = gettext('link') + " <a> Ctrl-L";
+ var toolbar_blockquote_label = gettext('quote') + " <blockquote> Ctrl-.";
+ var toolbar_code_label = gettext('preformatted text') + " <pre><code> Ctrl-K";
+ var toolbar_image_label = gettext('image') + " <img> Ctrl-G";
+ var toolbar_attachment_label = gettext('attachment') + " Ctrl-F";
+ var toolbar_numbered_label = gettext('numbered list') + " <ol> Ctrl-O";
+ var toolbar_bulleted_label = gettext('bulleted list') + " <ul> Ctrl-U";
+ var toolbar_heading_label = gettext('heading') + " <h1>/<h2> Ctrl-H";
+ var toolbar_horizontal_label = gettext('horizontal bar') + " <hr> Ctrl-R";
+ var toolbar_undo_label = gettext('undo') + " Ctrl-Z";
+ var toolbar_redo_label = gettext('redo') + " Ctrl-Y";
+
+ // -------------------------------------------------------------------
+ // YOUR CHANGES GO HERE
+ //
+ // I've tried to localize the things you are likely to change to
+ // this area.
+ // -------------------------------------------------------------------
+
+ // The text that appears on the upper part of the dialog box when
+ // entering links.
+ var imageDialogText = "<p style='margin-top: 0px'>" + gettext('enter image url') + '</p>';
+ var linkDialogText = "<p style='margin-top: 0px'>" + gettext('enter url') + '</p>';
+ var fileDialogText = "<p>" + gettext('upload file attachment') + '</p>';
+ // The default text that appears in the dialog input box when entering
+ // links.
+ var imageDefaultText = "http://";
+ var linkDefaultText = "http://";
+
+ // The location of your button images relative to the base directory.
+ var imageDirectory = "images/";
+
+ // Some intervals in ms. These can be adjusted to reduce the control's load.
+ var previewPollInterval = 500;
+ var pastePollInterval = 100;
+
+ // The link and title for the help button
+ var helpLink = "http://wmd-editor.com/";
+ var helpHoverTitle = "WMD website";
+ var helpTarget = "_blank";
+ var localUploadFileName = null;
+
+ // -------------------------------------------------------------------
+ // END OF YOUR CHANGES
+ // -------------------------------------------------------------------
+
+ // A collection of the important regions on the page.
+ // Cached so we don't have to keep traversing the DOM.
+ wmd.PanelCollection = function(){
+ this.buttonBar = doc.getElementById("wmd-button-bar");
+ this.preview = doc.getElementById("previewer");
+ this.output = doc.getElementById("wmd-output");
+ this.input = doc.getElementById("editor");
+ };
+
+ // This PanelCollection object can't be filled until after the page
+ // has loaded.
+ wmd.panels = undefined;
+
+ // Internet explorer has problems with CSS sprite buttons that use HTML
+ // lists. When you click on the background image "button", IE will
+ // select the non-existent link text and discard the selection in the
+ // textarea. The solution to this is to cache the textarea selection
+ // on the button's mousedown event and set a flag. In the part of the
+ // code where we need to grab the selection, we check for the flag
+ // and, if it's set, use the cached area instead of querying the
+ // textarea.
+ //
+ // This ONLY affects Internet Explorer (tested on versions 6, 7
+ // and 8) and ONLY on button clicks. Keyboard shortcuts work
+ // normally since the focus never leaves the textarea.
+ wmd.ieCachedRange = null; // cached textarea selection
+ wmd.ieRetardedClick = false; // flag
+
+ // Returns true if the DOM element is visible, false if it's hidden.
+ // Checks if display is anything other than none.
+ util.isVisible = function (elem) {
+
+ if (window.getComputedStyle) {
+ // Most browsers
+ return window.getComputedStyle(elem, null).getPropertyValue("display") !== "none";
+ }
+ else if (elem.currentStyle) {
+ // IE
+ return elem.currentStyle.display !== "none";
+ }
+ };
+
+
+ // Adds a listener callback to a DOM element which is fired on a specified
+ // event.
+ util.addEvent = function(elem, event, listener){
+ if (elem.attachEvent) {
+ // IE only. The "on" is mandatory.
+ elem.attachEvent("on" + event, listener);
+ }
+ else {
+ // Other browsers.
+ elem.addEventListener(event, listener, false);
+ }
+ };
+
+
+ // Removes a listener callback from a DOM element which is fired on a specified
+ // event.
+ util.removeEvent = function(elem, event, listener){
+ if (elem.detachEvent) {
+ // IE only. The "on" is mandatory.
+ elem.detachEvent("on" + event, listener);
+ }
+ else {
+ // Other browsers.
+ elem.removeEventListener(event, listener, false);
+ }
+ };
+
+ // Converts \r\n and \r to \n.
+ util.fixEolChars = function(text){
+ text = text.replace(/\r\n/g, "\n");
+ text = text.replace(/\r/g, "\n");
+ return text;
+ };
+
+ // Extends a regular expression. Returns a new RegExp
+ // using pre + regex + post as the expression.
+ // Used in a few functions where we have a base
+ // expression and we want to pre- or append some
+ // conditions to it (e.g. adding "$" to the end).
+ // The flags are unchanged.
+ //
+ // regex is a RegExp, pre and post are strings.
+ util.extendRegExp = function(regex, pre, post){
+
+ if (pre === null || pre === undefined)
+ {
+ pre = "";
+ }
+ if(post === null || post === undefined)
+ {
+ post = "";
+ }
+
+ var pattern = regex.toString();
+ var flags;
+
+ // Replace the flags with empty space and store them.
+ pattern = pattern.replace(/\/([gim]*)$/, "");
+ flags = re.$1;
+
+ // Remove the slash delimiters on the regular expression.
+ pattern = pattern.replace(/(^\/|\/$)/g, "");
+ pattern = pre + pattern + post;
+
+ return new re(pattern, flags);
+ };
+
+
+ // Sets the image for a button passed to the WMD editor.
+ // Returns a new element with the image attached.
+ // Adds several style properties to the image.
+ util.createImage = function(img){
+
+ var imgPath = imageDirectory + img;
+
+ var elem = doc.createElement("img");
+ elem.className = "wmd-button";
+ elem.src = imgPath;
+
+ return elem;
+ };
+
+
+// This simulates a modal dialog box and asks for the URL when you
+// click the hyperlink or image buttons.
+//
+// text: The html for the input box.
+// defaultInputText: The default value that appears in the input box.
+// makeLinkMarkdown: The function which is executed when the prompt is dismissed, either via OK or Cancel
+util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
+
+ // These variables need to be declared at this level since they are used
+ // in multiple functions.
+ var dialog;// The dialog box.
+ var background;// The background beind the dialog box.
+ var input;// The text box where you enter the hyperlink.
+
+ if (defaultInputText === undefined) {
+ defaultInputText = "";
+ }
+
+ // Used as a keydown event handler. Esc dismisses the prompt.
+ // Key code 27 is ESC.
+ var checkEscape = function(key){
+ var code = (key.charCode || key.keyCode);
+ if (code === 27) {
+ close(true);
+ }
+ };
+
+ // Dismisses the hyperlink input box.
+ // isCancel is true if we don't care about the input text.
+ // isCancel is false if we are going to keep the text.
+ var close = function(isCancel){
+ util.removeEvent(doc.body, "keydown", checkEscape);
+ var text = input.value;
+
+ if (isCancel){
+ text = null;
+ }
+ else{
+ // Fixes common pasting errors.
+ text = text.replace('http://http://', 'http://');
+ text = text.replace('http://https://', 'https://');
+ text = text.replace('http://ftp://', 'ftp://');
+
+ if (text.indexOf('http://') === -1 && text.indexOf('ftp://') === -1 && text.indexOf('https://') === -1) {
+ if (dialogType == 'link'){
+ //add http only to urls
+ text = 'http://' + text;
+ }
+ }
+ }
+
+ dialog.parentNode.removeChild(dialog);
+ background.parentNode.removeChild(background);
+ makeLinkMarkdown(text);
+ return false;
+ };
+
+ // Creates the background behind the hyperlink text entry box.
+ // Most of this has been moved to CSS but the div creation and
+ // browser-specific hacks remain here.
+ var createBackground = function(){
+
+ background = doc.createElement("div");
+ background.className = "wmd-prompt-background";
+ style = background.style;
+ style.position = "absolute";
+ style.top = "0";
+
+ style.zIndex = "1000";
+
+ // Some versions of Konqueror don't support transparent colors
+ // so we make the whole window transparent.
+ //
+ // Is this necessary on modern konqueror browsers?
+ if (global.isKonqueror){
+ style.backgroundColor = "transparent";
+ }
+ else if (global.isIE){
+ style.filter = "alpha(opacity=50)";
+ }
+ else {
+ style.opacity = "0.5";
+ }
+
+ var pageSize = position.getPageSize();
+ style.height = pageSize[1] + "px";
+
+ if(global.isIE){
+ style.left = doc.documentElement.scrollLeft;
+ style.width = doc.documentElement.clientWidth;
+ }
+ else {
+ style.left = "0";
+ style.width = "100%";
+ }
+
+ doc.body.appendChild(background);
+ };
+
+ // Create the text input box form/window.
+ var createDialog = function(){
+
+ // The main dialog box.
+ dialog = doc.createElement("div");
+ dialog.className = "wmd-prompt-dialog";
+ dialog.style.padding = "10px;";
+ dialog.style.position = "fixed";
+ dialog.style.width = "400px";
+ dialog.style.zIndex = "1001";
+
+ // The dialog text.
+ var question = doc.createElement("div");
+ question.innerHTML = text;
+ question.style.padding = "5px";
+ dialog.appendChild(question);
+
+ // The web form container for the text box and buttons.
+ var form = doc.createElement("form");
+ form.onsubmit = function(){ return close(false); };
+ style = form.style;
+ style.padding = "0";
+ style.margin = "0";
+ style.cssFloat = "left";
+ style.width = "100%";
+ style.textAlign = "center";
+ style.position = "relative";
+ dialog.appendChild(form);
+
+ // The input text box
+ input = doc.createElement("input");
+ if(dialogType == 'image' || dialogType == 'file'){
+ input.id = "image-url";
+ }
+ input.type = "text";
+ if (dialogType == 'file'){
+ input.disabled = "disabled";
+ };
+
+ input.value = defaultInputText;
+ style = input.style;
+ style.display = "block";
+ style.width = "80%";
+ style.marginLeft = style.marginRight = "auto";
+ form.appendChild(input);
+
+ // The upload file input
+ if(dialogType == 'image' || dialogType == 'file'){
+ var upload_container = $('<div></div>');
+ var upload_input = $('<input type="file" />');
+ upload_input.attr('name', 'file-upload');
+ upload_input.attr('id', 'file-upload');
+ upload_input.attr('size', 26);
+
+ var startUploadHandler = function(){
+ localUploadFileName = $(this).val();
+ return ajaxFileUpload($('#image-url'), startUploadHandler);
+ };
+
+ upload_input.change(startUploadHandler);
+
+ upload_container.append(upload_input);
+ upload_container.append($('<br/>'));
+
+ var spinner = $('<img />');
+ spinner.attr('id', 'loading');
+ spinner.attr('src', mediaUrl("media/images/indicator.gif"));
+ spinner.css('display', 'none');
+
+ upload_container.append(spinner);
+ upload_container.css('padding', '5px');
+ $(form).append(upload_container);
+ }
+
+ // The ok button
+ var okButton = doc.createElement("input");
+ okButton.type = "button";
+ okButton.onclick = function(){
+ var isCancel = false;
+ if ($.trim($(input).val()) === ''){
+ isCancel = true;
+ }
+ return close(isCancel);
+ };
+ okButton.value = "OK";
+ style = okButton.style;
+ style.margin = "10px";
+ style.display = "inline";
+ style.width = "7em";
+
+ // The cancel button
+ var cancelButton = doc.createElement("input");
+ cancelButton.type = "button";
+ cancelButton.onclick = function(){ return close(true); };
+ cancelButton.value = "Cancel";
+ style = cancelButton.style;
+ style.margin = "10px";
+ style.display = "inline";
+ style.width = "7em";
+
+ // The order of these buttons is different on macs.
+ if (/mac/.test(nav.platform.toLowerCase())) {
+ form.appendChild(cancelButton);
+ form.appendChild(okButton);
+ }
+ else {
+ form.appendChild(okButton);
+ form.appendChild(cancelButton);
+ }
+
+ util.addEvent(doc.body, "keydown", checkEscape);
+ dialog.style.top = "50%";
+ dialog.style.left = "50%";
+ dialog.style.display = "block";
+ if(global.isIE_5or6){
+ dialog.style.position = "absolute";
+ dialog.style.top = doc.documentElement.scrollTop + 200 + "px";
+ dialog.style.left = "50%";
+ }
+ doc.body.appendChild(dialog);
+
+ // This has to be done AFTER adding the dialog to the form if you
+ // want it to be centered.
+ dialog.style.marginTop = -(position.getHeight(dialog) / 2) + "px";
+ dialog.style.marginLeft = -(position.getWidth(dialog) / 2) + "px";
+
+ };
+
+ createBackground();
+
+ // Why is this in a zero-length timeout?
+ // Is it working around a browser bug?
+ top.setTimeout(function(){
+ createDialog();
+ var defTextLen = defaultInputText.length;
+ if (input.type == 'text' && input.selectionStart !== undefined) {
+ input.selectionStart = 0;
+ input.selectionEnd = defTextLen;
+ }
+ else if (input.createTextRange) {
+ var range = input.createTextRange();
+ range.collapse(false);
+ range.moveStart("character", -defTextLen);
+ range.moveEnd("character", defTextLen);
+ range.select();
+ }
+
+ input.focus();
+ }, 0);
+};
+
+
+ // UNFINISHED
+ // The assignment in the while loop makes jslint cranky.
+ // I'll change it to a better loop later.
+ position.getTop = function(elem, isInner){
+ var result = elem.offsetTop;
+ if (!isInner) {
+ while (elem.offsetParent) {
+ elem = elem.offsetParent;
+ result += elem.offsetTop;
+ }
+ }
+ return result;
+ };
+
+ position.getHeight = function (elem) {
+ return elem.offsetHeight || elem.scrollHeight;
+ };
+
+ position.getWidth = function (elem) {
+ return elem.offsetWidth || elem.scrollWidth;
+ };
+
+ position.getPageSize = function(){
+
+ var scrollWidth, scrollHeight;
+ var innerWidth, innerHeight;
+
+ // It's not very clear which blocks work with which browsers.
+ if(self.innerHeight && self.scrollMaxY){
+ scrollWidth = doc.body.scrollWidth;
+ scrollHeight = self.innerHeight + self.scrollMaxY;
+ }
+ else if(doc.body.scrollHeight > doc.body.offsetHeight){
+ scrollWidth = doc.body.scrollWidth;
+ scrollHeight = doc.body.scrollHeight;
+ }
+ else{
+ scrollWidth = doc.body.offsetWidth;
+ scrollHeight = doc.body.offsetHeight;
+ }
+
+ if(self.innerHeight){
+ // Non-IE browser
+ innerWidth = self.innerWidth;
+ innerHeight = self.innerHeight;
+ }
+ else if(doc.documentElement && doc.documentElement.clientHeight){
+ // Some versions of IE (IE 6 w/ a DOCTYPE declaration)
+ innerWidth = doc.documentElement.clientWidth;
+ innerHeight = doc.documentElement.clientHeight;
+ }
+ else if(doc.body){
+ // Other versions of IE
+ innerWidth = doc.body.clientWidth;
+ innerHeight = doc.body.clientHeight;
+ }
+
+ var maxWidth = Math.max(scrollWidth, innerWidth);
+ var maxHeight = Math.max(scrollHeight, innerHeight);
+ return [maxWidth, maxHeight, innerWidth, innerHeight];
+ };
+
+ // Watches the input textarea, polling at an interval and runs
+ // a callback function if anything has changed.
+ wmd.inputPoller = function(callback, interval){
+
+ var pollerObj = this;
+ var inputArea = wmd.panels.input;
+
+ // Stored start, end and text. Used to see if there are changes to the input.
+ var lastStart;
+ var lastEnd;
+ var markdown;
+
+ var killHandle; // Used to cancel monitoring on destruction.
+ // Checks to see if anything has changed in the textarea.
+ // If so, it runs the callback.
+ this.tick = function(){
+
+ if (!util.isVisible(inputArea)) {
+ return;
+ }
+
+ // Update the selection start and end, text.
+ if (inputArea.selectionStart || inputArea.selectionStart === 0) {
+ var start = inputArea.selectionStart;
+ var end = inputArea.selectionEnd;
+ if (start != lastStart || end != lastEnd) {
+ lastStart = start;
+ lastEnd = end;
+
+ if (markdown != inputArea.value) {
+ markdown = inputArea.value;
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+
+ var doTickCallback = function(){
+
+ if (!util.isVisible(inputArea)) {
+ return;
+ }
+
+ // If anything has changed, call the function.
+ if (pollerObj.tick()) {
+ callback();
+ }
+ };
+
+ // Set how often we poll the textarea for changes.
+ var assignInterval = function(){
+ // previewPollInterval is set at the top of the namespace.
+ killHandle = top.setInterval(doTickCallback, interval);
+ };
+
+ this.destroy = function(){
+ top.clearInterval(killHandle);
+ };
+
+ assignInterval();
+ };
+
+ // Handles pushing and popping TextareaStates for undo/redo commands.
+ // I should rename the stack variables to list.
+ wmd.undoManager = function(callback){
+
+ var undoObj = this;
+ var undoStack = []; // A stack of undo states
+ var stackPtr = 0; // The index of the current state
+ var mode = "none";
+ var lastState; // The last state
+ var poller;
+ var timer; // The setTimeout handle for cancelling the timer
+ var inputStateObj;
+
+ // Set the mode for later logic steps.
+ var setMode = function(newMode, noSave){
+
+ if (mode != newMode) {
+ mode = newMode;
+ if (!noSave) {
+ saveState();
+ }
+ }
+
+ if (!global.isIE || mode != "moving") {
+ timer = top.setTimeout(refreshState, 1);
+ }
+ else {
+ inputStateObj = null;
+ }
+ };
+
+ var refreshState = function(){
+ inputStateObj = new wmd.TextareaState();
+ poller.tick();
+ timer = undefined;
+ };
+
+ this.setCommandMode = function(){
+ mode = "command";
+ saveState();
+ timer = top.setTimeout(refreshState, 0);
+ };
+
+ this.canUndo = function(){
+ return stackPtr > 1;
+ };
+
+ this.canRedo = function(){
+ if (undoStack[stackPtr + 1]) {
+ return true;
+ }
+ return false;
+ };
+
+ // Removes the last state and restores it.
+ this.undo = function(){
+
+ if (undoObj.canUndo()) {
+ if (lastState) {
+ // What about setting state -1 to null or checking for undefined?
+ lastState.restore();
+ lastState = null;
+ }
+ else {
+ undoStack[stackPtr] = new wmd.TextareaState();
+ undoStack[--stackPtr].restore();
+
+ if (callback) {
+ callback();
+ }
+ }
+ }
+
+ mode = "none";
+ wmd.panels.input.focus();
+ refreshState();
+ };
+
+ // Redo an action.
+ this.redo = function(){
+
+ if (undoObj.canRedo()) {
+
+ undoStack[++stackPtr].restore();
+
+ if (callback) {
+ callback();
+ }
+ }
+
+ mode = "none";
+ wmd.panels.input.focus();
+ refreshState();
+ };
+
+ // Push the input area state to the stack.
+ var saveState = function(){
+
+ var currState = inputStateObj || new wmd.TextareaState();
+
+ if (!currState) {
+ return false;
+ }
+ if (mode == "moving") {
+ if (!lastState) {
+ lastState = currState;
+ }
+ return;
+ }
+ if (lastState) {
+ if (undoStack[stackPtr - 1].text != lastState.text) {
+ undoStack[stackPtr++] = lastState;
+ }
+ lastState = null;
+ }
+ undoStack[stackPtr++] = currState;
+ undoStack[stackPtr + 1] = null;
+ if (callback) {
+ callback();
+ }
+ };
+
+ var handleCtrlYZ = function(event){
+
+ var handled = false;
+
+ if (event.ctrlKey || event.metaKey) {
+
+ // IE and Opera do not support charCode.
+ var keyCode = event.charCode || event.keyCode;
+ var keyCodeChar = String.fromCharCode(keyCode);
+
+ switch (keyCodeChar) {
+
+ case "y":
+ undoObj.redo();
+ handled = true;
+ break;
+
+ case "z":
+ if (!event.shiftKey) {
+ undoObj.undo();
+ }
+ else {
+ undoObj.redo();
+ }
+ handled = true;
+ break;
+ }
+ }
+
+ if (handled) {
+ if (event.preventDefault) {
+ event.preventDefault();
+ }
+ if (top.event) {
+ top.event.returnValue = false;
+ }
+ return;
+ }
+ };
+
+ // Set the mode depending on what is going on in the input area.
+ var handleModeChange = function(event){
+
+ if (!event.ctrlKey && !event.metaKey) {
+
+ var keyCode = event.keyCode;
+
+ if ((keyCode >= 33 && keyCode <= 40) || (keyCode >= 63232 && keyCode <= 63235)) {
+ // 33 - 40: page up/dn and arrow keys
+ // 63232 - 63235: page up/dn and arrow keys on safari
+ setMode("moving");
+ }
+ else if (keyCode == 8 || keyCode == 46 || keyCode == 127) {
+ // 8: backspace
+ // 46: delete
+ // 127: delete
+ setMode("deleting");
+ }
+ else if (keyCode == 13) {
+ // 13: Enter
+ setMode("newlines");
+ }
+ else if (keyCode == 27) {
+ // 27: escape
+ setMode("escape");
+ }
+ else if ((keyCode < 16 || keyCode > 20) && keyCode != 91) {
+ // 16-20 are shift, etc.
+ // 91: left window key
+ // I think this might be a little messed up since there are
+ // a lot of nonprinting keys above 20.
+ setMode("typing");
+ }
+ }
+ };
+
+ var setEventHandlers = function(){
+
+ util.addEvent(wmd.panels.input, "keypress", function(event){
+ // keyCode 89: y
+ // keyCode 90: z
+ if ((event.ctrlKey || event.metaKey) && (event.keyCode == 89 || event.keyCode == 90)) {
+ event.preventDefault();
+ }
+ });
+
+ var handlePaste = function(){
+ if (global.isIE || (inputStateObj && inputStateObj.text != wmd.panels.input.value)) {
+ if (timer === undefined) {
+ mode = "paste";
+ saveState();
+ refreshState();
+ }
+ }
+ };
+
+ // pastePollInterval is specified at the beginning of this namespace.
+ poller = new wmd.inputPoller(handlePaste, pastePollInterval);
+
+ util.addEvent(wmd.panels.input, "keydown", handleCtrlYZ);
+ util.addEvent(wmd.panels.input, "keydown", handleModeChange);
+
+ util.addEvent(wmd.panels.input, "mousedown", function(){
+ setMode("moving");
+ });
+ wmd.panels.input.onpaste = handlePaste;
+ wmd.panels.input.ondrop = handlePaste;
+ };
+
+ var init = function(){
+ setEventHandlers();
+ refreshState();
+ saveState();
+ };
+
+ this.destroy = function(){
+ if (poller) {
+ poller.destroy();
+ }
+ };
+
+ init();
+ };
+
+ // I think my understanding of how the buttons and callbacks are stored in the array is incomplete.
+ wmd.editor = function(previewRefreshCallback){
+
+ if (!previewRefreshCallback) {
+ previewRefreshCallback = function(){};
+ }
+
+ var inputBox = wmd.panels.input;
+
+ var offsetHeight = 0;
+
+ var editObj = this;
+
+ var mainDiv;
+ var mainSpan;
+
+ var div; // This name is pretty ambiguous. I should rename this.
+
+ // Used to cancel recurring events from setInterval.
+ var creationHandle;
+
+ var undoMgr; // The undo manager
+
+ // Perform the button's action.
+ var doClick = function(button){
+
+ inputBox.focus();
+
+ if (button.textOp) {
+
+ if (undoMgr) {
+ undoMgr.setCommandMode();
+ }
+
+ var state = new wmd.TextareaState();
+
+ if (!state) {
+ return;
+ }
+
+ var chunks = state.getChunks();
+
+ // Some commands launch a "modal" prompt dialog. Javascript
+ // can't really make a modal dialog box and the WMD code
+ // will continue to execute while the dialog is displayed.
+ // This prevents the dialog pattern I'm used to and means
+ // I can't do something like this:
+ //
+ // var link = CreateLinkDialog();
+ // makeMarkdownLink(link);
+ //
+ // Instead of this straightforward method of handling a
+ // dialog I have to pass any code which would execute
+ // after the dialog is dismissed (e.g. link creation)
+ // in a function parameter.
+ //
+ // Yes this is awkward and I think it sucks, but there's
+ // no real workaround. Only the image and link code
+ // create dialogs and require the function pointers.
+ var fixupInputArea = function(){
+
+ inputBox.focus();
+
+ if (chunks) {
+ state.setChunks(chunks);
+ }
+
+ state.restore();
+ previewRefreshCallback();
+ };
+
+ var noCleanup = button.textOp(chunks, fixupInputArea);
+
+ if(!noCleanup) {
+ fixupInputArea();
+ }
+
+ }
+
+ if (button.execute) {
+ button.execute(editObj);
+ }
+ };
+
+ var setUndoRedoButtonStates = function(){
+ if(undoMgr){
+ setupButton(document.getElementById("wmd-undo-button"), undoMgr.canUndo());
+ setupButton(document.getElementById("wmd-redo-button"), undoMgr.canRedo());
+ }
+ };
+
+ var setupButton = function(button, isEnabled) {
+
+ var normalYShift = "0px";
+ var disabledYShift = "-20px";
+ var highlightYShift = "-40px";
+
+ if(isEnabled) {
+ button.style.backgroundPosition = button.XShift + " " + normalYShift;
+ button.onmouseover = function(){
+ this.style.backgroundPosition = this.XShift + " " + highlightYShift;
+ };
+
+ button.onmouseout = function(){
+ this.style.backgroundPosition = this.XShift + " " + normalYShift;
+ };
+
+ // IE tries to select the background image "button" text (it's
+ // implemented in a list item) so we have to cache the selection
+ // on mousedown.
+ if(global.isIE) {
+ button.onmousedown = function() {
+ wmd.ieRetardedClick = true;
+ wmd.ieCachedRange = document.selection.createRange();
+ };
+ }
+
+ if (!button.isHelp)
+ {
+ button.onclick = function() {
+ if (this.onmouseout) {
+ this.onmouseout();
+ }
+ doClick(this);
+ return false;
+ };
+ }
+ }
+ else {
+ button.style.backgroundPosition = button.XShift + " " + disabledYShift;
+ button.onmouseover = button.onmouseout = button.onclick = function(){};
+ }
+ };
+
+ var makeSpritedButtonRow = function(){
+ var buttonBar = document.getElementById("wmd-button-bar");
+ var normalYShift = "0px";
+ var disabledYShift = "-20px";
+ var highlightYShift = "-40px";
+
+ var buttonRow = document.createElement("ul");
+ buttonRow.id = "wmd-button-row";
+ buttonRow = buttonBar.appendChild(buttonRow);
+
+
+ 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);
+
+ 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);
+
+ 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);
+
+ 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);
+
+ 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);
+
+ 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);
+ /*
+ var helpButton = document.createElement("li");
+ helpButton.className = "wmd-button";
+ helpButton.id = "wmd-help-button";
+ helpButton.XShift = "-240px";
+ helpButton.isHelp = true;
+
+ var helpAnchor = document.createElement("a");
+ helpAnchor.href = helpLink;
+ helpAnchor.target = helpTarget
+ helpAnchor.title = helpHoverTitle;
+ helpButton.appendChild(helpAnchor);
+
+ setupButton(helpButton, true);
+ buttonRow.appendChild(helpButton);
+ */
+ setUndoRedoButtonStates();
+ };
+
+ var setupEditor = function(){
+
+ if (/\?noundo/.test(doc.location.href)) {
+ wmd.nativeUndo = true;
+ }
+
+ if (!wmd.nativeUndo) {
+ undoMgr = new wmd.undoManager(function(){
+ previewRefreshCallback();
+ setUndoRedoButtonStates();
+ });
+ }
+
+ makeSpritedButtonRow();
+
+
+ var keyEvent = "keydown";
+ if (global.isOpera) {
+ keyEvent = "keypress";
+ }
+
+ util.addEvent(inputBox, keyEvent, function(key){
+
+ // Check to see if we have a button key and, if so execute the callback.
+ if (key.ctrlKey || key.metaKey) {
+
+ var keyCode = key.charCode || key.keyCode;
+ var keyCodeStr = String.fromCharCode(keyCode).toLowerCase();
+
+ // Bugfix for messed up DEL and .
+ if (keyCode === 46) {
+ keyCodeStr = "";
+ }
+ if (keyCode === 190) {
+ keyCodeStr = ".";
+ }
+
+ switch(keyCodeStr) {
+ case "b":
+ doClick(document.getElementById("wmd-bold-button"));
+ break;
+ case "i":
+ doClick(document.getElementById("wmd-italic-button"));
+ break;
+ case "l":
+ doClick(document.getElementById("wmd-link-button"));
+ break;
+ case ".":
+ doClick(document.getElementById("wmd-quote-button"));
+ break;
+ case "k":
+ doClick(document.getElementById("wmd-code-button"));
+ break;
+ case "g":
+ doClick(document.getElementById("wmd-image-button"));
+ break;
+ case "o":
+ doClick(document.getElementById("wmd-olist-button"));
+ break;
+ case "u":
+ doClick(document.getElementById("wmd-ulist-button"));
+ break;
+ case "h":
+ doClick(document.getElementById("wmd-heading-button"));
+ break;
+ case "r":
+ doClick(document.getElementById("wmd-hr-button"));
+ break;
+ case "y":
+ doClick(document.getElementById("wmd-redo-button"));
+ break;
+ case "z":
+ if(key.shiftKey) {
+ doClick(document.getElementById("wmd-redo-button"));
+ }
+ else {
+ doClick(document.getElementById("wmd-undo-button"));
+ }
+ break;
+ default:
+ return;
+ }
+
+
+ if (key.preventDefault) {
+ key.preventDefault();
+ }
+
+ if (top.event) {
+ top.event.returnValue = false;
+ }
+ }
+ });
+
+ // Auto-indent on shift-enter
+ util.addEvent(inputBox, "keyup", function(key){
+ if (key.shiftKey && !key.ctrlKey && !key.metaKey) {
+ var keyCode = key.charCode || key.keyCode;
+ // Character 13 is Enter
+ if (keyCode === 13) {
+ fakeButton = {};
+ fakeButton.textOp = command.doAutoindent;
+ doClick(fakeButton);
+ }
+ }
+ });
+
+ if (inputBox.form) {
+ var submitCallback = inputBox.form.onsubmit;
+ inputBox.form.onsubmit = function(){
+ convertToHtml();
+ if (submitCallback) {
+ return submitCallback.apply(this, arguments);
+ }
+ };
+ }
+ };
+
+ // Convert the contents of the input textarea to HTML in the output/preview panels.
+ var convertToHtml = function(){
+
+ if (wmd.showdown) {
+ var markdownConverter = new wmd.showdown.converter();
+ }
+ var text = inputBox.value;
+
+ var callback = function(){
+ inputBox.value = text;
+ //value is assigned here
+ };
+
+ if (!/markdown/.test(wmd.wmd_env.output.toLowerCase())) {
+ if (markdownConverter) {
+ inputBox.value = markdownConverter.makeHtml(text);
+ //value is assigned here
+ top.setTimeout(callback, 0);
+ }
+ }
+ return true;
+ };
+
+
+ this.undo = function(){
+ if (undoMgr) {
+ undoMgr.undo();
+ }
+ };
+
+ this.redo = function(){
+ if (undoMgr) {
+ undoMgr.redo();
+ }
+ };
+
+ // This is pretty useless. The setupEditor function contents
+ // should just be copied here.
+ var init = function(){
+ setupEditor();
+ };
+
+ this.destroy = function(){
+ if (undoMgr) {
+ undoMgr.destroy();
+ }
+ if (div.parentNode) {
+ div.parentNode.removeChild(div);
+ }
+ if (inputBox) {
+ inputBox.style.marginTop = "";
+ }
+ top.clearInterval(creationHandle);
+ };
+
+ init();
+ };
+
+ // The input textarea state/contents.
+ // This is used to implement undo/redo by the undo manager.
+ wmd.TextareaState = function(){
+
+ // Aliases
+ var stateObj = this;
+ var inputArea = wmd.panels.input;
+
+ this.init = function() {
+
+ if (!util.isVisible(inputArea)) {
+ return;
+ }
+
+ this.setInputAreaSelectionStartEnd();
+ this.scrollTop = inputArea.scrollTop;
+ if (!this.text && inputArea.selectionStart || inputArea.selectionStart === 0) {
+ this.text = inputArea.value;
+ }
+
+ };
+
+ // Sets the selected text in the input box after we've performed an
+ // operation.
+ this.setInputAreaSelection = function(){
+
+ if (!util.isVisible(inputArea)) {
+ return;
+ }
+
+ if (inputArea.selectionStart !== undefined && !global.isOpera) {
+
+ inputArea.focus();
+ inputArea.selectionStart = stateObj.start;
+ inputArea.selectionEnd = stateObj.end;
+ inputArea.scrollTop = stateObj.scrollTop;
+ }
+ else if (doc.selection) {
+
+ if (doc.activeElement && doc.activeElement !== inputArea) {
+ return;
+ }
+
+ inputArea.focus();
+ var range = inputArea.createTextRange();
+ range.moveStart("character", -inputArea.value.length);
+ range.moveEnd("character", -inputArea.value.length);
+ range.moveEnd("character", stateObj.end);
+ range.moveStart("character", stateObj.start);
+ range.select();
+ }
+ };
+
+ this.setInputAreaSelectionStartEnd = function(){
+
+ if (inputArea.selectionStart || inputArea.selectionStart === 0) {
+
+ stateObj.start = inputArea.selectionStart;
+ stateObj.end = inputArea.selectionEnd;
+ }
+ else if (doc.selection) {
+
+ stateObj.text = util.fixEolChars(inputArea.value);
+
+ // IE loses the selection in the textarea when buttons are
+ // clicked. On IE we cache the selection and set a flag
+ // which we check for here.
+ var range;
+ if(wmd.ieRetardedClick && wmd.ieCachedRange) {
+ range = wmd.ieCachedRange;
+ wmd.ieRetardedClick = false;
+ }
+ else {
+ range = doc.selection.createRange();
+ }
+
+ var fixedRange = util.fixEolChars(range.text);
+ var marker = "\x07";
+ var markedRange = marker + fixedRange + marker;
+ range.text = markedRange;
+ var inputText = util.fixEolChars(inputArea.value);
+
+ range.moveStart("character", -markedRange.length);
+ range.text = fixedRange;
+
+ stateObj.start = inputText.indexOf(marker);
+ stateObj.end = inputText.lastIndexOf(marker) - marker.length;
+
+ var len = stateObj.text.length - util.fixEolChars(inputArea.value).length;
+
+ if (len) {
+ range.moveStart("character", -fixedRange.length);
+ while (len--) {
+ fixedRange += "\n";
+ stateObj.end += 1;
+ }
+ range.text = fixedRange;
+ }
+
+ this.setInputAreaSelection();
+ }
+ };
+
+ // Restore this state into the input area.
+ this.restore = function(){
+
+ if (stateObj.text !== undefined && stateObj.text != inputArea.value) {
+ inputArea.value = stateObj.text;
+ //value is assigned here
+ }
+ this.setInputAreaSelection();
+ inputArea.scrollTop = stateObj.scrollTop;
+ };
+
+ // Gets a collection of HTML chunks from the inptut textarea.
+ this.getChunks = function(){
+
+ var chunk = new wmd.Chunks();
+
+ chunk.before = util.fixEolChars(stateObj.text.substring(0, stateObj.start));
+ chunk.startTag = "";
+ chunk.selection = util.fixEolChars(stateObj.text.substring(stateObj.start, stateObj.end));
+ chunk.endTag = "";
+ chunk.after = util.fixEolChars(stateObj.text.substring(stateObj.end));
+ chunk.scrollTop = stateObj.scrollTop;
+
+ return chunk;
+ };
+
+ // Sets the TextareaState properties given a chunk of markdown.
+ this.setChunks = function(chunk){
+
+ chunk.before = chunk.before + chunk.startTag;
+ chunk.after = chunk.endTag + chunk.after;
+
+ if (global.isOpera) {
+ chunk.before = chunk.before.replace(/\n/g, "\r\n");
+ chunk.selection = chunk.selection.replace(/\n/g, "\r\n");
+ chunk.after = chunk.after.replace(/\n/g, "\r\n");
+ }
+
+ this.start = chunk.before.length;
+ this.end = chunk.before.length + chunk.selection.length;
+ this.text = chunk.before + chunk.selection + chunk.after;
+ this.scrollTop = chunk.scrollTop;
+ };
+
+ this.init();
+ };
+
+ // before: contains all the text in the input box BEFORE the selection.
+ // after: contains all the text in the input box AFTER the selection.
+ wmd.Chunks = function(){
+ };
+
+ // startRegex: a regular expression to find the start tag
+ // endRegex: a regular expresssion to find the end tag
+ wmd.Chunks.prototype.findTags = function(startRegex, endRegex){
+
+ var chunkObj = this;
+ var regex;
+
+ if (startRegex) {
+
+ regex = util.extendRegExp(startRegex, "", "$");
+
+ this.before = this.before.replace(regex,
+ function(match){
+ chunkObj.startTag = chunkObj.startTag + match;
+ return "";
+ });
+
+ regex = util.extendRegExp(startRegex, "^", "");
+
+ this.selection = this.selection.replace(regex,
+ function(match){
+ chunkObj.startTag = chunkObj.startTag + match;
+ return "";
+ });
+ }
+
+ if (endRegex) {
+
+ regex = util.extendRegExp(endRegex, "", "$");
+
+ this.selection = this.selection.replace(regex,
+ function(match){
+ chunkObj.endTag = match + chunkObj.endTag;
+ return "";
+ });
+
+ regex = util.extendRegExp(endRegex, "^", "");
+
+ this.after = this.after.replace(regex,
+ function(match){
+ chunkObj.endTag = match + chunkObj.endTag;
+ return "";
+ });
+ }
+ };
+
+ // If remove is false, the whitespace is transferred
+ // to the before/after regions.
+ //
+ // If remove is true, the whitespace disappears.
+ wmd.Chunks.prototype.trimWhitespace = function(remove){
+
+ this.selection = this.selection.replace(/^(\s*)/, "");
+
+ if (!remove) {
+ this.before += re.$1;
+ }
+
+ this.selection = this.selection.replace(/(\s*)$/, "");
+
+ if (!remove) {
+ this.after = re.$1 + this.after;
+ }
+ };
+
+
+ wmd.Chunks.prototype.skipLines = function(nLinesBefore, nLinesAfter, findExtraNewlines){
+
+ if (nLinesBefore === undefined) {
+ nLinesBefore = 1;
+ }
+
+ if (nLinesAfter === undefined) {
+ nLinesAfter = 1;
+ }
+
+ nLinesBefore++;
+ nLinesAfter++;
+
+ var regexText;
+ var replacementText;
+
+ this.selection = this.selection.replace(/(^\n*)/, "");
+ this.startTag = this.startTag + re.$1;
+ this.selection = this.selection.replace(/(\n*$)/, "");
+ this.endTag = this.endTag + re.$1;
+ this.startTag = this.startTag.replace(/(^\n*)/, "");
+ this.before = this.before + re.$1;
+ this.endTag = this.endTag.replace(/(\n*$)/, "");
+ this.after = this.after + re.$1;
+
+ if (this.before) {
+
+ regexText = replacementText = "";
+
+ while (nLinesBefore--) {
+ regexText += "\\n?";
+ replacementText += "\n";
+ }
+
+ if (findExtraNewlines) {
+ regexText = "\\n*";
+ }
+ this.before = this.before.replace(new re(regexText + "$", ""), replacementText);
+ }
+
+ if (this.after) {
+
+ regexText = replacementText = "";
+
+ while (nLinesAfter--) {
+ regexText += "\\n?";
+ replacementText += "\n";
+ }
+ if (findExtraNewlines) {
+ regexText = "\\n*";
+ }
+
+ this.after = this.after.replace(new re(regexText, ""), replacementText);
+ }
+ };
+
+ // The markdown symbols - 4 spaces = code, > = blockquote, etc.
+ command.prefixes = "(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)";
+
+ // Remove markdown symbols from the chunk selection.
+ command.unwrap = function(chunk){
+ var txt = new re("([^\\n])\\n(?!(\\n|" + command.prefixes + "))", "g");
+ chunk.selection = chunk.selection.replace(txt, "$1 $2");
+ };
+
+ command.wrap = function(chunk, len){
+ command.unwrap(chunk);
+ var regex = new re("(.{1," + len + "})( +|$\\n?)", "gm");
+
+ chunk.selection = chunk.selection.replace(regex, function(line, marked){
+ if (new re("^" + command.prefixes, "").test(line)) {
+ return line;
+ }
+ return marked + "\n";
+ });
+
+ chunk.selection = chunk.selection.replace(/\s+$/, "");
+ };
+
+ command.doBold = function(chunk, postProcessing){
+ return command.doBorI(chunk, postProcessing, 2, "strong text");
+ };
+
+ command.doItalic = function(chunk, postProcessing){
+ return command.doBorI(chunk, postProcessing, 1, "emphasized text");
+ };
+
+ // chunk: The selected region that will be enclosed with */**
+ // nStars: 1 for italics, 2 for bold
+ // insertText: If you just click the button without highlighting text, this gets inserted
+ command.doBorI = function(chunk, postProcessing, nStars, insertText){
+
+ // Get rid of whitespace and fixup newlines.
+ chunk.trimWhitespace();
+ chunk.selection = chunk.selection.replace(/\n{2,}/g, "\n");
+
+ // Look for stars before and after. Is the chunk already marked up?
+ chunk.before.search(/(\**$)/);
+ var starsBefore = re.$1;
+
+ chunk.after.search(/(^\**)/);
+ var starsAfter = re.$1;
+
+ var prevStars = Math.min(starsBefore.length, starsAfter.length);
+
+ // Remove stars if we have to since the button acts as a toggle.
+ if ((prevStars >= nStars) && (prevStars != 2 || nStars != 1)) {
+ chunk.before = chunk.before.replace(re("[*]{" + nStars + "}$", ""), "");
+ chunk.after = chunk.after.replace(re("^[*]{" + nStars + "}", ""), "");
+ }
+ else if (!chunk.selection && starsAfter) {
+ // It's not really clear why this code is necessary. It just moves
+ // some arbitrary stuff around.
+ chunk.after = chunk.after.replace(/^([*_]*)/, "");
+ chunk.before = chunk.before.replace(/(\s?)$/, "");
+ var whitespace = re.$1;
+ chunk.before = chunk.before + starsAfter + whitespace;
+ }
+ else {
+
+ // In most cases, if you don't have any selected text and click the button
+ // you'll get a selected, marked up region with the default text inserted.
+ if (!chunk.selection && !starsAfter) {
+ chunk.selection = insertText;
+ }
+
+ // Add the true markup.
+ var markup = nStars <= 1 ? "*" : "**"; // shouldn't the test be = ?
+ chunk.before = chunk.before + markup;
+ chunk.after = markup + chunk.after;
+ }
+
+ return;
+ };
+
+ command.stripLinkDefs = function(text, defsToAdd){
+
+ text = text.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm,
+ function(totalMatch, id, link, newlines, title){
+ defsToAdd[id] = totalMatch.replace(/\s*$/, "");
+ if (newlines) {
+ // Strip the title and return that separately.
+ defsToAdd[id] = totalMatch.replace(/["(](.+?)[")]$/, "");
+ return newlines + title;
+ }
+ return "";
+ });
+
+ return text;
+ };
+
+ command.addLinkDef = function(chunk, linkDef){
+
+ var refNumber = 0; // The current reference number
+ var defsToAdd = {}; //
+ // Start with a clean slate by removing all previous link definitions.
+ chunk.before = command.stripLinkDefs(chunk.before, defsToAdd);
+ chunk.selection = command.stripLinkDefs(chunk.selection, defsToAdd);
+ chunk.after = command.stripLinkDefs(chunk.after, defsToAdd);
+
+ var defs = "";
+ var regex = /(\[(?:\[[^\]]*\]|[^\[\]])*\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g;
+
+ var addDefNumber = function(def){
+ refNumber++;
+ def = def.replace(/^[ ]{0,3}\[(\d+)\]:/, " [" + refNumber + "]:");
+ defs += "\n" + def;
+ };
+
+ var getLink = function(wholeMatch, link, id, end){
+
+ if (defsToAdd[id]) {
+ addDefNumber(defsToAdd[id]);
+ return link + refNumber + end;
+
+ }
+ return wholeMatch;
+ };
+
+ chunk.before = chunk.before.replace(regex, getLink);
+
+ if (linkDef) {
+ addDefNumber(linkDef);
+ }
+ else {
+ chunk.selection = chunk.selection.replace(regex, getLink);
+ }
+
+ var refOut = refNumber;
+
+ chunk.after = chunk.after.replace(regex, getLink);
+
+ if (chunk.after) {
+ chunk.after = chunk.after.replace(/\n*$/, "");
+ }
+ if (!chunk.after) {
+ chunk.selection = chunk.selection.replace(/\n*$/, "");
+ }
+
+ chunk.after += "\n\n" + defs;
+
+ return refOut;
+ };
+
+ command.doLinkOrImage = function(chunk, postProcessing, itemType){
+
+ chunk.trimWhitespace();
+ chunk.findTags(/\s*!?\[/, /\][ ]?(?:\n[ ]*)?(\[.*?\])?/);
+
+ if (chunk.endTag.length > 1) {
+
+ chunk.startTag = chunk.startTag.replace(/!?\[/, "");
+ chunk.endTag = "";
+ command.addLinkDef(chunk, null);
+
+ }
+ else {
+
+ if (/\n\n/.test(chunk.selection)) {
+ command.addLinkDef(chunk, null);
+ return;
+ }
+
+ // The function to be executed when you enter a link and press OK or Cancel.
+ // Marks up the link and adds the ref.
+ var makeLinkMarkdown = function(link){
+
+ if (link !== null) {
+
+ chunk.startTag = chunk.endTag = "";
+ //var linkDef = " [999]: " + link;
+
+ //var num = command.addLinkDef(chunk, linkDef);
+ chunk.startTag = (itemType == 'image') ? "![" : "[";
+ chunk.endTag = "](" + link + ")";
+
+ if (!chunk.selection) {
+ if (itemType == 'image') {
+ chunk.selection = gettext("image description");
+ }
+ else if (itemType == 'file'){
+ chunk.selection = localUploadFileName || gettext("file name");
+ localUploadFileName = null;
+ }
+ else {
+ chunk.selection = gettext("link text");
+ }
+ }
+ }
+ else {
+ if (itemType == 'image' || itemType == 'file'){
+ return;
+ }
+ }
+ postProcessing();
+ };
+
+ if (itemType == 'image') {
+ // add forth param to identify image window
+ util.prompt(imageDialogText, imageDefaultText, makeLinkMarkdown, 'image');
+ }
+ else if (itemType == 'file'){
+ util.prompt(fileDialogText, '', makeLinkMarkdown, 'file');
+ }
+ else {
+ util.prompt(linkDialogText, linkDefaultText, makeLinkMarkdown, 'link');
+ }
+ return true;
+ }
+};
+
+ util.makeAPI = function(){
+ wmd.wmd = {};
+ wmd.wmd.editor = wmd.editor;
+ wmd.wmd.previewManager = wmd.previewManager;
+ };
+
+ util.startEditor = function(){
+
+ if (wmd.wmd_env.autostart === false) {
+ util.makeAPI();
+ return;
+ }
+
+ var edit; // The editor (buttons + input + outputs) - the main object.
+ var previewMgr; // The preview manager.
+
+ // Fired after the page has fully loaded.
+ var loadListener = function(){
+
+ wmd.panels = new wmd.PanelCollection();
+
+ previewMgr = new wmd.previewManager();
+ var previewRefreshCallback = previewMgr.refresh;
+
+ edit = new wmd.editor(previewRefreshCallback);
+
+ previewMgr.refresh(true);
+
+ };
+
+ util.addEvent(top, "load", loadListener);
+ };
+
+ wmd.previewManager = function(){
+
+ var managerObj = this;
+ var converter;
+ var poller;
+ var timeout;
+ var elapsedTime;
+ var oldInputText;
+ var htmlOut;
+ var maxDelay = 3000;
+ var startType = "delayed"; // The other legal value is "manual"
+
+ // Adds event listeners to elements and creates the input poller.
+ var setupEvents = function(inputElem, listener){
+
+ util.addEvent(inputElem, "input", listener);
+ inputElem.onpaste = listener;
+ inputElem.ondrop = listener;
+
+ util.addEvent(inputElem, "keypress", listener);
+ util.addEvent(inputElem, "keydown", listener);
+ // previewPollInterval is set at the top of this file.
+ poller = new wmd.inputPoller(listener, previewPollInterval);
+ };
+
+ var getDocScrollTop = function(){
+
+ var result = 0;
+
+ if (top.innerHeight) {
+ result = top.pageYOffset;
+ }
+ else
+ if (doc.documentElement && doc.documentElement.scrollTop) {
+ result = doc.documentElement.scrollTop;
+ }
+ else
+ if (doc.body) {
+ result = doc.body.scrollTop;
+ }
+
+ return result;
+ };
+
+ var makePreviewHtml = function(){
+
+ // If there are no registered preview and output panels
+ // there is nothing to do.
+ if (!wmd.panels.preview && !wmd.panels.output) {
+ return;
+ }
+
+ var text = wmd.panels.input.value;
+ if (text && text == oldInputText) {
+ return; // Input text hasn't changed.
+ }
+ else {
+ oldInputText = text;
+ }
+
+ var prevTime = new Date().getTime();
+
+ if (!converter && wmd.showdown) {
+ converter = new wmd.showdown.converter();
+ }
+
+ if (converter) {
+ text = converter.makeHtml(text);
+ }
+
+ // Calculate the processing time of the HTML creation.
+ // It's used as the delay time in the event listener.
+ var currTime = new Date().getTime();
+ elapsedTime = currTime - prevTime;
+
+ pushPreviewHtml(text);
+ htmlOut = text;
+ };
+
+ // setTimeout is already used. Used as an event listener.
+ var applyTimeout = function(){
+
+ if (timeout) {
+ top.clearTimeout(timeout);
+ timeout = undefined;
+ }
+
+ if (startType !== "manual") {
+
+ var delay = 0;
+
+ if (startType === "delayed") {
+ delay = elapsedTime;
+ }
+
+ if (delay > maxDelay) {
+ delay = maxDelay;
+ }
+ timeout = top.setTimeout(makePreviewHtml, delay);
+ }
+ };
+
+ var getScaleFactor = function(panel){
+ if (panel.scrollHeight <= panel.clientHeight) {
+ return 1;
+ }
+ return panel.scrollTop / (panel.scrollHeight - panel.clientHeight);
+ };
+
+ var setPanelScrollTops = function(){
+
+ if (wmd.panels.preview) {
+ wmd.panels.preview.scrollTop = (wmd.panels.preview.scrollHeight - wmd.panels.preview.clientHeight) * getScaleFactor(wmd.panels.preview);
+ }
+
+ if (wmd.panels.output) {
+ wmd.panels.output.scrollTop = (wmd.panels.output.scrollHeight - wmd.panels.output.clientHeight) * getScaleFactor(wmd.panels.output);
+ }
+ };
+
+ this.refresh = function(requiresRefresh){
+
+ if (requiresRefresh) {
+ oldInputText = "";
+ makePreviewHtml();
+ }
+ else {
+ applyTimeout();
+ }
+ };
+
+ this.processingTime = function(){
+ return elapsedTime;
+ };
+
+ // The output HTML
+ this.output = function(){
+ return htmlOut;
+ };
+
+ // The mode can be "manual" or "delayed"
+ this.setUpdateMode = function(mode){
+ startType = mode;
+ managerObj.refresh();
+ };
+
+ var isFirstTimeFilled = true;
+
+ var pushPreviewHtml = function(text){
+
+ var emptyTop = position.getTop(wmd.panels.input) - getDocScrollTop();
+
+ // Send the encoded HTML to the output textarea/div.
+ if (wmd.panels.output) {
+ // The value property is only defined if the output is a textarea.
+ if (wmd.panels.output.value !== undefined) {
+ wmd.panels.output.value = text;
+ //value is assigned here
+ wmd.panels.output.readOnly = true;
+ }
+ // Otherwise we are just replacing the text in a div.
+ // Send the HTML wrapped in <pre><code>
+ else {
+ var newText = text.replace(/&/g, "&amp;");
+ newText = newText.replace(/</g, "&lt;");
+ wmd.panels.output.innerHTML = "<pre><code>" + newText + "</code></pre>";
+ }
+ }
+
+ if (wmd.panels.preview) {
+ wmd.panels.preview.innerHTML = text;
+ }
+
+ setPanelScrollTops();
+
+ if (isFirstTimeFilled) {
+ isFirstTimeFilled = false;
+ return;
+ }
+
+ var fullTop = position.getTop(wmd.panels.input) - getDocScrollTop();
+
+ if (global.isIE) {
+ top.setTimeout(function(){
+ top.scrollBy(0, fullTop - emptyTop);
+ }, 0);
+ }
+ else {
+ top.scrollBy(0, fullTop - emptyTop);
+ }
+ };
+
+ var init = function(){
+
+ setupEvents(wmd.panels.input, applyTimeout);
+ makePreviewHtml();
+
+ if (wmd.panels.preview) {
+ wmd.panels.preview.scrollTop = 0;
+ }
+ if (wmd.panels.output) {
+ wmd.panels.output.scrollTop = 0;
+ }
+ };
+
+ this.destroy = function(){
+ if (poller) {
+ poller.destroy();
+ }
+ };
+
+ init();
+ };
+
+ // When making a list, hitting shift-enter will put your cursor on the next line
+ // at the current indent level.
+ command.doAutoindent = function(chunk, postProcessing){
+
+ chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/, "\n\n");
+ chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/, "\n\n");
+ chunk.before = chunk.before.replace(/(\n|^)[ \t]+\n$/, "\n\n");
+
+ if(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(chunk.before)){
+ if(command.doList){
+ command.doList(chunk);
+ }
+ }
+ if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(chunk.before)){
+ if(command.doBlockquote){
+ command.doBlockquote(chunk);
+ }
+ }
+ if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(chunk.before)){
+ if(command.doCode){
+ command.doCode(chunk);
+ }
+ }
+ };
+
+ command.doBlockquote = function(chunk, postProcessing){
+
+ chunk.selection = chunk.selection.replace(/^(\n*)([^\r]+?)(\n*)$/,
+ function(totalMatch, newlinesBefore, text, newlinesAfter){
+ chunk.before += newlinesBefore;
+ chunk.after = newlinesAfter + chunk.after;
+ return text;
+ });
+
+ chunk.before = chunk.before.replace(/(>[ \t]*)$/,
+ function(totalMatch, blankLine){
+ chunk.selection = blankLine + chunk.selection;
+ return "";
+ });
+
+ chunk.selection = chunk.selection.replace(/^(\s|>)+$/ ,"");
+ chunk.selection = chunk.selection || "Blockquote";
+
+ if(chunk.before){
+ chunk.before = chunk.before.replace(/\n?$/,"\n");
+ }
+ if(chunk.after){
+ chunk.after = chunk.after.replace(/^\n?/,"\n");
+ }
+
+ chunk.before = chunk.before.replace(/(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*$)/,
+ function(totalMatch){
+ chunk.startTag = totalMatch;
+ return "";
+ });
+
+ chunk.after = chunk.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/,
+ function(totalMatch){
+ chunk.endTag = totalMatch;
+ return "";
+ });
+
+ var replaceBlanksInTags = function(useBracket){
+
+ var replacement = useBracket ? "> " : "";
+
+ if(chunk.startTag){
+ chunk.startTag = chunk.startTag.replace(/\n((>|\s)*)\n$/,
+ function(totalMatch, markdown){
+ return "\n" + markdown.replace(/^[ ]{0,3}>?[ \t]*$/gm, replacement) + "\n";
+ });
+ }
+ if(chunk.endTag){
+ chunk.endTag = chunk.endTag.replace(/^\n((>|\s)*)\n/,
+ function(totalMatch, markdown){
+ return "\n" + markdown.replace(/^[ ]{0,3}>?[ \t]*$/gm, replacement) + "\n";
+ });
+ }
+ };
+
+ if(/^(?![ ]{0,3}>)/m.test(chunk.selection)){
+ command.wrap(chunk, wmd.wmd_env.lineLength - 2);
+ chunk.selection = chunk.selection.replace(/^/gm, "> ");
+ replaceBlanksInTags(true);
+ chunk.skipLines();
+ }
+ else{
+ chunk.selection = chunk.selection.replace(/^[ ]{0,3}> ?/gm, "");
+ command.unwrap(chunk);
+ replaceBlanksInTags(false);
+
+ if(!/^(\n|^)[ ]{0,3}>/.test(chunk.selection) && chunk.startTag){
+ chunk.startTag = chunk.startTag.replace(/\n{0,2}$/, "\n\n");
+ }
+
+ if(!/(\n|^)[ ]{0,3}>.*$/.test(chunk.selection) && chunk.endTag){
+ chunk.endTag=chunk.endTag.replace(/^\n{0,2}/, "\n\n");
+ }
+ }
+
+ if(!/\n/.test(chunk.selection)){
+ chunk.selection = chunk.selection.replace(/^(> *)/,
+ function(wholeMatch, blanks){
+ chunk.startTag += blanks;
+ return "";
+ });
+ }
+ };
+
+ command.doCode = function(chunk, postProcessing){
+
+ var hasTextBefore = /\S[ ]*$/.test(chunk.before);
+ var hasTextAfter = /^[ ]*\S/.test(chunk.after);
+
+ // Use 'four space' markdown if the selection is on its own
+ // line or is multiline.
+ if((!hasTextAfter && !hasTextBefore) || /\n/.test(chunk.selection)){
+
+ chunk.before = chunk.before.replace(/[ ]{4}$/,
+ function(totalMatch){
+ chunk.selection = totalMatch + chunk.selection;
+ return "";
+ });
+
+ var nLinesBack = 1;
+ var nLinesForward = 1;
+
+ if(/\n(\t|[ ]{4,}).*\n$/.test(chunk.before)){
+ nLinesBack = 0;
+ }
+ if(/^\n(\t|[ ]{4,})/.test(chunk.after)){
+ nLinesForward = 0;
+ }
+
+ chunk.skipLines(nLinesBack, nLinesForward);
+
+ if(!chunk.selection){
+ chunk.startTag = " ";
+ chunk.selection = "enter code here";
+ }
+ else {
+ if(/^[ ]{0,3}\S/m.test(chunk.selection)){
+ chunk.selection = chunk.selection.replace(/^/gm, " ");
+ }
+ else{
+ chunk.selection = chunk.selection.replace(/^[ ]{4}/gm, "");
+ }
+ }
+ }
+ else{
+ // Use backticks (`) to delimit the code block.
+
+ chunk.trimWhitespace();
+ chunk.findTags(/`/, /`/);
+
+ if(!chunk.startTag && !chunk.endTag){
+ chunk.startTag = chunk.endTag="`";
+ if(!chunk.selection){
+ chunk.selection = "enter code here";
+ }
+ }
+ else if(chunk.endTag && !chunk.startTag){
+ chunk.before += chunk.endTag;
+ chunk.endTag = "";
+ }
+ else{
+ chunk.startTag = chunk.endTag="";
+ }
+ }
+ };
+
+ command.doList = function(chunk, postProcessing, isNumberedList){
+
+ // These are identical except at the very beginning and end.
+ // Should probably use the regex extension function to make this clearer.
+ var previousItemsRegex = /(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/;
+ var nextItemsRegex = /^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/;
+
+ // The default bullet is a dash but others are possible.
+ // This has nothing to do with the particular HTML bullet,
+ // it's just a markdown bullet.
+ var bullet = "-";
+
+ // The number in a numbered list.
+ var num = 1;
+
+ // Get the item prefix - e.g. " 1. " for a numbered list, " - " for a bulleted list.
+ var getItemPrefix = function(){
+ var prefix;
+ if(isNumberedList){
+ prefix = " " + num + ". ";
+ num++;
+ }
+ else{
+ prefix = " " + bullet + " ";
+ }
+ return prefix;
+ };
+
+ // Fixes the prefixes of the other list items.
+ var getPrefixedItem = function(itemText){
+
+ // The numbering flag is unset when called by autoindent.
+ if(isNumberedList === undefined){
+ isNumberedList = /^\s*\d/.test(itemText);
+ }
+
+ // Renumber/bullet the list element.
+ itemText = itemText.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm,
+ function( _ ){
+ return getItemPrefix();
+ });
+
+ return itemText;
+ };
+
+ chunk.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/, null);
+
+ if(chunk.before && !/\n$/.test(chunk.before) && !/^\n/.test(chunk.startTag)){
+ chunk.before += chunk.startTag;
+ chunk.startTag = "";
+ }
+
+ if(chunk.startTag){
+
+ var hasDigits = /\d+[.]/.test(chunk.startTag);
+ chunk.startTag = "";
+ chunk.selection = chunk.selection.replace(/\n[ ]{4}/g, "\n");
+ command.unwrap(chunk);
+ chunk.skipLines();
+
+ if(hasDigits){
+ // Have to renumber the bullet points if this is a numbered list.
+ chunk.after = chunk.after.replace(nextItemsRegex, getPrefixedItem);
+ }
+ if(isNumberedList == hasDigits){
+ return;
+ }
+ }
+
+ var nLinesUp = 1;
+
+ chunk.before = chunk.before.replace(previousItemsRegex,
+ function(itemText){
+ if(/^\s*([*+-])/.test(itemText)){
+ bullet = re.$1;
+ }
+ nLinesUp = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0;
+ return getPrefixedItem(itemText);
+ });
+
+ if(!chunk.selection){
+ chunk.selection = "List item";
+ }
+
+ var prefix = getItemPrefix();
+
+ var nLinesDown = 1;
+
+ chunk.after = chunk.after.replace(nextItemsRegex,
+ function(itemText){
+ nLinesDown = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0;
+ return getPrefixedItem(itemText);
+ });
+
+ chunk.trimWhitespace(true);
+ chunk.skipLines(nLinesUp, nLinesDown, true);
+ chunk.startTag = prefix;
+ var spaces = prefix.replace(/./g, " ");
+ command.wrap(chunk, wmd.wmd_env.lineLength - spaces.length);
+ chunk.selection = chunk.selection.replace(/\n/g, "\n" + spaces);
+
+ };
+
+ command.doHeading = function(chunk, postProcessing){
+
+ // Remove leading/trailing whitespace and reduce internal spaces to single spaces.
+ chunk.selection = chunk.selection.replace(/\s+/g, " ");
+ chunk.selection = chunk.selection.replace(/(^\s+|\s+$)/g, "");
+
+ // If we clicked the button with no selected text, we just
+ // make a level 2 hash header around some default text.
+ if(!chunk.selection){
+ chunk.startTag = "## ";
+ chunk.selection = "Heading";
+ chunk.endTag = " ##";
+ return;
+ }
+
+ var headerLevel = 0; // The existing header level of the selected text.
+
+ // Remove any existing hash heading markdown and save the header level.
+ chunk.findTags(/#+[ ]*/, /[ ]*#+/);
+ if(/#+/.test(chunk.startTag)){
+ headerLevel = re.lastMatch.length;
+ }
+ chunk.startTag = chunk.endTag = "";
+
+ // Try to get the current header level by looking for - and = in the line
+ // below the selection.
+ chunk.findTags(null, /\s?(-+|=+)/);
+ if(/=+/.test(chunk.endTag)){
+ headerLevel = 1;
+ }
+ if(/-+/.test(chunk.endTag)){
+ headerLevel = 2;
+ }
+
+ // Skip to the next line so we can create the header markdown.
+ chunk.startTag = chunk.endTag = "";
+ chunk.skipLines(1, 1);
+
+ // We make a level 2 header if there is no current header.
+ // If there is a header level, we substract one from the header level.
+ // If it's already a level 1 header, it's removed.
+ var headerLevelToCreate = headerLevel == 0 ? 2 : headerLevel - 1;
+
+ if(headerLevelToCreate > 0){
+
+ // The button only creates level 1 and 2 underline headers.
+ // Why not have it iterate over hash header levels? Wouldn't that be easier and cleaner?
+ var headerChar = headerLevelToCreate >= 2 ? "-" : "=";
+ var len = chunk.selection.length;
+ if(len > wmd.wmd_env.lineLength){
+ len = wmd.wmd_env.lineLength;
+ }
+ chunk.endTag = "\n";
+ while(len--){
+ chunk.endTag += headerChar;
+ }
+ }
+ };
+
+ command.doHorizontalRule = function(chunk, postProcessing){
+ chunk.startTag = "----------\n";
+ chunk.selection = "";
+ chunk.skipLines(2, 1, true);
+ }
+};
+
+
+Attacklab.wmd_env = {};
+Attacklab.account_options = {};
+Attacklab.wmd_defaults = {version:1, output:"Markdown", lineLength:40, delayLoad:false};
+
+if(!Attacklab.wmd)
+{
+ 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();
+ Attacklab.Util.startEditor();
+};
+
diff --git a/askbot/skins/common/media/style/auth.css b/askbot/skins/common/media/style/auth.css
new file mode 100644
index 00000000..33702758
--- /dev/null
+++ b/askbot/skins/common/media/style/auth.css
@@ -0,0 +1,48 @@
+#bigicon_providers, #smallicon_providers {
+ display: block;
+ padding: 0px;
+ width:600px;
+ margin:0px 0px 5px 0px;
+}
+
+.provider_logo {
+ display: inline-block;
+ padding: 4px;
+ border: 1px solid #DDD;
+ text-align: center;
+ vertical-align: middle;
+}
+
+.provider_logo.big {
+ height: 40px;
+ width: 90px;
+}
+
+.provider_logo.small {
+ height: 32px;
+ width: 32px;
+}
+
+.provider_logo.selected {
+ outline: 2px solid #FFF8C6;
+}
+
+.provider_logo .provider_url {
+ display: none;
+}
+
+.signin_form input[type="text"], .signin_form input[type="password"], .signin_form input[type="submit"] {
+ height: 28px;
+ line-height: 22px;
+ font-size: 140%;
+ border: 1px solid #999;
+}
+
+.signin_form .icon_input {
+ padding-left: 20px;
+}
+
+.or_label {
+ margin-top: 20px;
+ margin-bottom: 10px;
+} \ No newline at end of file
diff --git a/askbot/skins/common/media/style/jquery.autocomplete.css b/askbot/skins/common/media/style/jquery.autocomplete.css
new file mode 100644
index 00000000..b3d7b759
--- /dev/null
+++ b/askbot/skins/common/media/style/jquery.autocomplete.css
@@ -0,0 +1,37 @@
+.acInput {
+ width: 200px;
+}
+.acResults {
+ padding: 0px;
+ border: 1px solid WindowFrame;
+ background-color: Window;
+ overflow: hidden;
+}
+
+.acResults ul {
+ width: 100%;
+ list-style-position: outside;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.acResults li {
+ margin: 0px;
+ padding: 2px 5px;
+ cursor: pointer;
+ display: block;
+ width: 100%;
+ font: menu;
+ font-size: 12px;
+ overflow: hidden;
+}
+
+.acLoading {
+ background : url('../images/indicator.gif') right center no-repeat;
+}
+
+.acSelect {
+ background-color: Highlight;
+ color: HighlightText;
+}
diff --git a/askbot/skins/common/media/style/lib_style.less b/askbot/skins/common/media/style/lib_style.less
new file mode 100644
index 00000000..d1424137
--- /dev/null
+++ b/askbot/skins/common/media/style/lib_style.less
@@ -0,0 +1,38 @@
+/* General Predifined classes, read more in lesscss.org */
+
+/* Variables for Colors*/
+
+@header-color:#16160f;
+
+@link:#1b79bd;
+@question-link:#464646;
+@button-label:#4a757f;
+
+/* Receive exactly positions for background Sprite */
+
+.sprites(@hor,@vert,@back:url(../images/sprites.png)){
+ background:@hor @vert @back;
+}
+
+
+/* CSS3 Elements */
+
+.box-shadow (@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){
+ -webkit-box-shadow: @arguments;
+ -moz-box-shadow: @arguments;
+ box-shadow: @arguments;
+}
+
+.text-shadow(@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){
+ text-shadow: @arguments;
+ -moz-text-shadow: @arguments;
+ -webkit-text-shadow: @arguments;
+}
+
+.rounded-corners(@radio: 5px){
+ border-radius: @radio;
+ -ms-border-radius: @radio;
+ -moz-border-radius: @radio;
+ -webkit-border-radius: @radio;
+ -khtml-border-radius: @radio;
+}
diff --git a/askbot/skins/common/media/style/openid.css b/askbot/skins/common/media/style/openid.css
new file mode 100644
index 00000000..0d201df2
--- /dev/null
+++ b/askbot/skins/common/media/style/openid.css
@@ -0,0 +1,45 @@
+#openid_form {
+ width: 470px;
+}
+ #openid_form legend {
+ font-weight: bold;
+ }
+#openid_choice {
+ display: none;
+}
+#openid_input_area {
+ clear: both;
+ padding: 10px;
+}
+#openid_btns, #openid_btns br {
+ clear: both;
+}
+ #openid_highlight {
+ padding: 3px;
+ background-color: #FFFCC9;
+ float: left;
+ }
+ .openid_large_btn {
+ width: 100px;
+ height: 60px;
+ border: 1px solid #DDD;
+ margin: 3px;
+ float: left;
+ }
+ .openid_small_btn {
+ width: 24px;
+ height: 24px;
+ border: 1px solid #DDD;
+ margin: 3px;
+ float: left;
+ }
+ a.openid_large_btn:focus {
+ outline: none;
+ }
+ a.openid_large_btn:focus
+ {
+ -moz-outline-style: none;
+ }
+ .openid_selected {
+ border: 4px solid #DDD;
+ }
diff --git a/askbot/skins/common/media/style/prettify.css b/askbot/skins/common/media/style/prettify.css
new file mode 100644
index 00000000..10a37577
--- /dev/null
+++ b/askbot/skins/common/media/style/prettify.css
@@ -0,0 +1,27 @@
+/* Pretty printing styles. Used with prettify.js. */
+
+.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 { 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; }
+}
diff --git a/askbot/skins/common/media/style/style.css b/askbot/skins/common/media/style/style.css
new file mode 100644
index 00000000..82a812d4
--- /dev/null
+++ b/askbot/skins/common/media/style/style.css
@@ -0,0 +1,2616 @@
+@import url(jquery.autocomplete.css);
+@import "lib_style.less"; /* 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: 'Yanone Kaffeesatz', sans-serif;
+}
+
+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;
+}
+
+p {
+ font-size: 14px;
+ line-height: 140%;
+ margin-bottom: 6px;
+ padding-left: 5px;
+}
+
+a {
+ color:@link;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+h2 {
+ font-size: 140%;
+ padding: 3px 0 3px 5px;
+}
+
+h3 {
+ font-size: 120%;
+ 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: 160%;
+ padding: 10px 0 5px 5px;
+}
+
+/* ----- Custom positions ----- */
+
+.left{float:left}
+.right{float:right}
+.clean{clear:both}
+
+
+/* ----- Notify message bar ----- */
+
+.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;
+
+ p {
+ margin-top: 6px;
+ margin-bottom: 6px;
+ font-size: 16px;
+ color:#424242
+ }
+}
+
+#close-notify {
+ position: absolute;
+ right: 5px;
+ top: 7px;
+ color: #735005;
+ text-decoration: none;
+ line-height: 18px;
+ .sprites(-6px,-5px);
+ cursor: pointer;
+ width:20px;
+ height:20px;
+}
+
+#close-notify:hover {
+ .sprites(-26px,-5px);
+}
+
+/* ----- Header ----- */
+
+#header {
+ margin-top: 0px;
+ background: @header-color;
+}
+
+.content-wrapper {/* wrapper positioning class */
+ width: 960px;
+ margin: auto;
+ position:relative;
+}
+
+#logo img{
+ padding: 5px 0px 5px 0px;
+}
+
+#user-tools-nav {
+ height: 20px;
+ position:absolute;
+ bottom: 0;
+ right:0px;
+ padding-bottom:5px;
+
+ a {
+ height: 35px;
+ text-align: right;
+ margin-left: 20px;
+ text-decoration: underline;
+ color:#d0e296;
+ font-size:16px;
+ }
+
+ a:first-child {
+ margin-left: 0;
+ }
+
+ a#ab-responses {
+ margin-left: 3px;
+ }
+
+ .user-info,.user-micro-info{
+ color:#b5b593;
+ }
+
+ a img {
+ vertical-align:middle;
+ margin-bottom:2px;
+ }
+
+ .user-info a {
+ margin: 0;
+ text-decoration: none;
+ }
+}
+
+#meta-nav {
+ float:right;
+
+ 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;
+ }
+
+ a:hover {
+ text-decoration: underline;
+ }
+
+ a.on {
+ font-weight:bold;
+ color: #FFF;
+ text-decoration: none;
+ }
+
+ a.special {
+ font-size: 18px;
+ color: #B02B2C;
+ font-weight: bold;
+ text-decoration: none;
+ }
+
+ a.special:hover {
+ text-decoration: underline;
+ }
+
+ #nav_tags{
+ .sprites(-50px,-5px)
+ }
+
+ #nav_users{
+ .sprites(-125px,-5px)
+ }
+
+ #nav_badges{
+ .sprites(-210px,-5px)
+ }
+}
+
+#secundary-header{
+ height:55px;
+ background:#e9e9e1;
+ border-bottom:#d3d3c2 1px solid;
+ margin-bottom:10px;
+
+ #home-button{
+ border-right:#afaf9e 1px solid;
+ .sprites(-6px,-36px);
+ height:55px;
+ width:43px;
+ display:block;
+ float:left;
+ }
+
+ #home-button:hover{
+ .sprites(-6px-45,-36px);
+ }
+
+ #scope-wrapper{
+ width:688px;
+ float:left;
+
+ a{
+ display:block;
+ float:left;
+ }
+
+ .scope-selector{
+ font-size:21px;
+ color:#5a5a4b;
+ height:55px;
+ line-height:55px;
+ margin-left:24px
+ }
+ .on{
+ background:url(../images/scopearrow.png) no-repeat center bottom;
+ }
+ }
+}
+
+#searchBar {
+ display:inline-block;
+ background-color: #fff;
+ width:412px;
+ border: 1px solid #c9c9b5;
+ float:right;
+ height:42px;
+ margin:6px 0px 0px 15px;
+
+ .searchInput, .searchInputCancelable {
+ font-size: 18px;
+ height: 40px;
+ background:#FFF;
+ border:0px;
+ color:#c2c2c2;
+ padding-left:10px;
+ font-family: 'Yanone Kaffeesatz', sans-serif;
+ }
+
+ .searchInput, .searchInputCancelable {
+ width: 352px;
+ }
+
+ .searchInputCancelable {
+ width: 317px;
+ }
+
+ .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;
+ .sprites(-98px,-36px);
+ cursor:pointer;
+ }
+
+ .searchBtn:hover {
+ .sprites(-98px-48,-36px);
+ }
+
+ .cancelSearchBtn {
+ font-size: 30px;
+ color: #ce8888;
+ background:#fff;
+ height: 42px;
+ border:0px;
+ border-left:#deded0 1px solid;
+ text-align: center;
+ width: 35px;
+ cursor:pointer;
+ }
+
+ .cancelSearchBtn:hover {
+ color: #d84040;
+ }
+}
+
+#ask-button{
+ 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;
+ float:right;
+ text-transform:uppercase;
+ .rounded-corners(5px);
+ .box-shadow(1px, 1px, 2px, #636363)
+}
+
+#ask-button:hover{
+ text-decoration:none;
+ background: url(../images/bigbutton.png) repeat-x top;
+ .text-shadow(0px, 1px, 0px, #c6d9dd)
+}
+
+/* ----- Content layout ----- */
+
+#ContentLeft {
+ width: 730px;
+ float: left;
+ position: relative;
+}
+
+#ContentRight {
+ width: 200px;
+ float: right;
+ padding: 0 0px 10px 0px;
+}
+
+#ContentFull {
+ float: left;
+ width: 950px;
+}
+
+/* ----- Sidebar Widgets Box ----- */
+
+.box {
+ background: #fff;
+ padding: 10px 0px 0px 0px;
+
+
+ p {
+ margin-bottom: 4px;
+ }
+
+ p.info-box-follow-up-links {
+ text-align: right;
+ margin: 0;
+ }
+
+ h2 {
+ padding-left: 0;
+ background:#eceeeb;
+ height:30px;
+ line-height:30px;
+ text-align:right;
+ font-size:24px;
+ font-weight:normal;
+ color:#656565;
+ padding-right:10px;
+ margin-bottom:10px;
+ }
+ h3{
+ color:#4a757f;
+ font-size:18px;
+ text-align:left;
+ font-weight:normal;
+ }
+ .contributorback{
+ background: #eceeeb url(../images/contributorsback.png) no-repeat center left;
+ }
+
+ label {
+ color: #333;
+ }
+
+ ul {
+ margin-left: 15px;
+ }
+
+ li {
+ list-style-type: disc;
+ font-size: 13px;
+ line-height: 20px;
+ margin-bottom: 10px;
+ }
+ ul.tags {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ line-height: 170%;
+ display: block;
+ }
+}
+
+img.gravatar {
+ margin:1px;
+}
+
+/* ----- 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 5px 0 0;
+ padding: 0;
+}
+
+.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;
+}
+
+ul#related-tags li {
+ margin: 0 5px 3px 0;
+ float: left;
+ clear: left;
+}
+
+/* .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: 18px;
+ 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: 18px;
+ line-height: 20px;
+ font-weight: normal;
+ font-size: 11px;
+ padding: 0px 7px 0px 15px;
+ text-decoration: none;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.deletable-tag {
+ margin-right: 3px;
+ white-space: nowrap;
+}
+
+.deletable-tag .tag-right {
+ padding-right: 0px;
+ float: left;
+}
+.deletable-tag.tag-left {
+ padding-right: 3px;
+}
+
+.tags a.tag-right,
+.tags span.tag-right {
+ color: #333;
+ text-decoration: none;
+}
+
+
+.users-page h1, .tags-page h1 {
+ float: left;
+}
+
+.main-page h1 {
+ margin-right: 5px;
+}
+
+#ground {
+ width: 100%;
+ clear: both;
+ border-top: 1px solid #000;
+ padding: 6px 0 0 0;
+ text-align: center;
+ background: #777;
+}
+
+#ground p {
+ margin-bottom:0;
+}
+
+
+
+img.license-logo {
+ margin: 6px 0 10px 0;
+}
+
+
+#askFormBar {
+ display:inline-block;
+ background-color: #e3e3e3;/*888a85; /*#e9b96e;*/
+ border: 1px solid #aaaaaa;
+ padding: 4px 7px 5px 5px;
+}
+#askFormBar p {
+ width: 685px;
+ margin:0 0 5px 0;
+}
+#askFormBar .questionTitleInput {
+ font-size: 24px;
+ line-height: 24px;
+ height: 36px;
+ width: 680px;
+ margin: 0px;
+ padding: 5px 0 0 5px;
+}
+
+#question-list {
+ float: left;
+ position: relative;
+ background-color: #FFF;
+ padding: 0;
+ width: 100%;
+}
+
+.ask-page div#question-list {
+ float: none;
+ width: 706px;
+}
+.ask-page div#question-list h2 {
+ font-size: 14px;
+ padding-bottom: 0;
+}
+.ask-page div#question-list span {
+ padding: 3px 7px;
+ margin-right: 5px;
+ background: #ccc;
+}
+
+
+
+span.delete-icon {
+ padding-left: 13px;
+ vertical-align: bottom;
+ background: url(../images/close-small-dark.png) no-repeat;
+ cursor: default;
+}
+span.delete-icon:hover {
+ background: url(../images/close-small-hover.png) no-repeat;
+}
+
+.tags span.delete-icon {
+ float: left;
+ height: 15px;
+ margin: 2px 0 0 1px;
+ display: block;
+}
+
+.tag-number {
+ font-weight: 700;
+ display: block;
+ float: left;
+ font-family: sans-serif;
+}
+
+.badges .tag-number {
+ float: none;
+ display: inline;
+ padding-right: 15px;
+}
+
+ul#search-tags {
+ padding-top: 3px;
+}
+
+/* ----- Sorting top Tab ------*/
+
+.tabBar {
+ background-color: #eff5f6;
+ height: 30px;
+ width: 412px;
+ clear: both;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ float:right;
+ font-family:Georgia;
+ font-size:16px;
+ .rounded-corners(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: #8b1717;
+ 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: #C22828;
+}
+
+.tabsA a.rev.on, tabsA a.rev.on:hover {
+}
+
+
+
+.tabsA .label, .tabsC .label {
+ float: left;
+ color: #646464;
+ margin-top:4px;
+ margin-right:5px;
+}
+
+.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;
+}
+
+.rss {
+ float: right;
+ font-size: 16px;
+ color: #f57900 !important;
+ margin: 1px 8px 0 0;
+ width:45px;
+ padding-left: 16px;
+ padding-top:3px;
+ background: url(../images/feed-icon-small.png) no-repeat center right;
+}
+
+.rss:hover {
+ color: #F4A731 !important;
+}
+
+
+/* ----- Question list ----- */
+
+.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: 22px;
+ font-weight:normal;
+}
+
+.short-summary a {
+ color:@question-link;
+}
+
+
+.short-summary .userinfo .relativetime,
+.short-summary .userinfo a,
+.short-summary span.anonymous {
+ font-size: 11px;
+ clear:both;
+ font-weight: normal;
+ color: #555;
+}
+
+
+.short-summary .userinfo {
+ text-align:center;
+ line-height:16px;
+}
+
+.short-summary .counts {
+ float: right;
+ margin: 2px 0 0 5px;
+}
+
+.short-summary .counts .item-count {
+ border:1px solid #cccccc;
+ -moz-border-radius:5px;
+ -webkit-border-radius:5px;
+ padding:0px 5px 0px 5px;
+ font-size: 17px;
+ font-weight: 800;
+}
+
+.short-summary .counts .votes div,
+.short-summary .counts .views div,
+.short-summary .counts .answers div,
+.short-summary .counts .favorites div
+{
+ font-size: 12px;
+ line-height:14px;
+ color: #555;
+}
+
+.short-summary .tags {
+ margin-top: 0;
+}
+
+.no-votes .item-count {
+ background: white;
+ color: gray;
+}
+.some-votes .item-count {
+ background: #a3d0ff;
+ color: #4a4a4a;
+}
+.no-answers .item-count {
+ background: #b63333;
+ color: yellow;
+}
+.no-favorites .item-count {
+ background: #b63333;
+ color: yellow;
+}
+.some-answers .item-count {
+ background: #ffed9c;
+ color: #a4a4a4;
+}
+.some-favorites .item-count {
+ background:#338333;
+ color:#d0f5a9;
+}
+.accepted .item-count {
+ background:#338333;
+ color:#d0f5a9;
+}
+.no-views .item-count {
+ background: gray;
+ color: white;
+}
+.some-views .item-count {
+ background: #ff8c8c;
+ color: #4a4a4a;
+}
+
+.short-summary .votes,
+.short-summary .answers,
+.short-summary .favorites,
+.short-summary .views {
+ text-align: center;
+ margin: 0 3px;
+ padding: 4px 2px 0px 2px;
+ width: 46px;
+ float: right;
+ -moz-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+.short-summary .views {
+ width: 36px;
+ padding-right: 0;
+}
+
+.short-summary h2 {
+ padding-left: 0;
+}
+
+#question-table,
+.answer-table {
+ margin: 2px 0 10px 0;
+ border-spacing: 0px;
+}
+
+.answer-table {
+ border-bottom: 1px solid #bbb;
+ clear: both;
+}
+
+.evenMore {
+ font-size: 14px;
+ font-weight: 800;
+}
+
+.evenMore a {
+ text-decoration: underline;
+}
+
+
+
+.pager {
+ clear:both;
+ border-top: 1px solid #777;
+ margin-top: 10px;
+ margin-bottom: 16px;
+}
+
+.pagesize {
+ margin-top: 10px;
+ margin-bottom: 16px;
+ float: right;
+}
+
+/** PAGINATOR **/
+.paginator {
+ padding: 5px 0 10px 0;
+ font: normal 12px sans-serif;
+}
+
+.paginator .prev a, .paginator .prev a:visited,
+.paginator .next a, .paginator .next a:visited {
+ border: 1px solid #fff;
+ background-color: #fff;
+ color: #777;
+ padding: 2px 4px 3px 4px;
+ font: bold 100% sans-serif;
+}
+
+.paginator .prev {
+ margin-right: .5em;
+}
+
+.paginator .next {
+ margin-left: .5em;
+}
+
+.paginator .page a, .paginator .page a:visited, .paginator .curr {
+ padding: .25em;
+ font: normal .875em verdana;
+ border: 1px solid #ccc;
+ background-color: #fff;
+ margin: 0em .25em;
+ color: #777;
+}
+
+.paginator .curr {
+ background-color: #777;
+ color: #fff;
+ border: 1px solid #777;
+ font-weight: bold;
+}
+
+.paginator .page a:hover,
+.paginator .curr a:hover,
+.paginator .prev a:hover,
+.paginator .next a:hover {
+ color: #fff;
+ background-color: #777;
+ border: 1px solid #777;
+ text-decoration: none;
+}
+
+.paginator .text {
+ color: #777;
+ padding: .3em;
+ font: bold 100% sans-serif;
+}
+
+.paginator-container-left {
+ padding: 5px 0 10px 0;
+}
+
+
+.question-page p.rss {
+ float:none;
+ clear:both;
+ padding: 3px 0 0 1px;
+ font-size: 14px;
+}
+
+.question-page p.rss a {
+ padding-left: 18px;
+ vertical-align: top;
+}
+
+/* badges */
+a.medal {
+ font-size: 14px;
+ line-height: 250%;
+ font-weight: 800;
+ 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;
+}
+
+.questions-related {
+ font-weight: 700;
+ word-wrap: break-word;
+}
+
+.questions-related p {
+ line-height: 20px;
+ margin-bottom: 10px;
+ font-size: 100%;
+}
+
+.question-status {
+ margin-top: 10px;
+ padding: 20px;
+ background-color: #F5F5F5;
+ text-align: center;
+}
+
+.question-status h3 {
+ font-size: 125%;
+}
+.question-body, .answer-body {
+ min-height: 39px;
+ line-height: 20px;
+ overflow: auto;
+ width: 660px;
+}
+.question-body IMG, .answer-body IMG {
+ max-width: 600px;
+}
+
+.vote-buttons {
+ float: left;
+ text-align: center;
+ padding-top: 2px;
+}
+
+.vote-buttons IMG {
+ cursor: pointer;
+}
+
+.vote-buttons .button{
+ -moz-border-radius: 10px;
+ margin-top: 20px;
+ border-radius: 10px;
+ height: 20px;
+ width: 80px;
+ border-style: solid;
+ border-width: 1px;
+ padding: 8px;
+ float:left;
+}
+
+.vote-buttons .followed{
+ font-color: #000;
+ font-style:normal;
+ background: #cccccc;
+}
+
+.vote-buttons .followed div{
+ font-weight: normal;
+}
+
+.vote-buttons .followed div.unfollow{
+ display:none;
+}
+
+.vote-buttons .followed:hover{
+ color: #fff;
+ background: #8b0000;
+}
+
+.vote-buttons .followed:hover div{
+ display:none;
+}
+
+.vote-buttons .followed:hover div.unfollow{
+ display:inline;
+ font-weight: bold;
+}
+
+.vote-buttons .follow{
+ background: #cccccc;
+}
+
+.vote-buttons .follow:hover{
+ background: #234f32;
+ color: #fff;
+ font-weight: bold;
+}
+
+.vote-number {
+ font-family: Arial;
+ padding: 0px 0 3px 0;
+ font-size: 140%;
+ font-weight: bold;
+ color: #777;
+}
+
+.vote-buttons .notify-sidebar {
+ text-align: left;
+}
+.vote-buttons .notify-sidebar label {
+ vertical-align: top;
+}
+
+.question-img-upvote:hover {
+ background: url(../images/vote-arrow-up-on.png)
+}
+
+.question-img-downvote:hover {
+ background: url(../images/vote-arrow-down-on.png)
+}
+
+.question-img-favorite:hover {
+ background: url(../images/vote-favorite-on.png)
+}
+
+.favorite-number {
+ padding: 5px 0 0 10px;
+ font-size: 100%;
+ font-family: Arial;
+ font-weight: bold;
+ color: #777;
+ text-align: left;
+}
+
+.notify-me {
+ float: left;
+}
+
+.offensive-flag a {
+ color: #777;
+ padding: 3px;
+ cursor: pointer;
+}
+
+.offensive-flag a:hover {
+ background-color: #777;
+ text-decoration: none;
+ color: #fff;
+}
+
+.linksopt a {
+ color: #777;
+ padding: 3px;
+ cursor: pointer;
+}
+
+.linksopt a:hover {
+ background-color: #777;
+ text-decoration: none;
+ color: #fff;
+}
+
+.post-controls a {
+ color: #777;
+ padding: 3px;
+ cursor: pointer;
+ border: none;
+ background: none;
+ text-decoration: none;
+}
+
+.post-controls a:hover {
+ background-color: #777;
+ color: #fff;
+}
+
+.post-controls .sep {
+ color: #ccc;
+}
+
+.comments {
+ font-size: 12px;
+ width: 650px;
+ clear: both;
+}
+
+.comments .comment {
+ border-top: 1px dotted #cccccc;
+ margin: 0;
+ overflow: auto;
+}
+
+.comments .content {
+ margin-bottom: 7px;
+}
+
+.comments div.comment {
+ min-height: 25px;
+}
+
+.comments div.comment:hover {
+ background-color: #eee;
+}
+
+div.comment .comment-votes {
+ float: left;
+ width: 37px;
+ line-height: 130%;
+ padding: 6px 5px 6px 3px;
+}
+
+div.comment .comment-body {
+ line-height: 140%;
+ margin: 3px 26px 0 46px;
+ padding: 5px 3px;
+ color: #666;
+}
+
+div.comment .comment-body p{
+ font-size:inherit;
+ margin-bottom: 3px;
+ padding: 0;
+}
+
+div.comment .comment-delete {
+ float: right;
+ width: 14px;
+ line-height: 130%;
+ padding: 8px 6px;
+}
+
+div.comment .upvote {
+ margin: 0px;
+ padding-right: 17px;
+ padding-top: 2px;
+ text-align: right;
+ height: 20px;
+ font-size: 13px;
+ font-weight: bold;
+ color: #777;
+}
+
+div.comment .upvote.upvoted {
+ color: #d64000;
+}
+
+div.comment .upvote.hover {
+ background: url(../images/go-up-grey.png) no-repeat;
+ background-position: right 1px;
+}
+
+div.comment .upvote:hover {
+ background: url(../images/go-up-orange.png) no-repeat;
+ background-position: right 1px;
+}
+
+.comments div.controls {
+ clear: both;
+ background: url(../images/gray-up-arrow-h18px.png) no-repeat;
+ width: 100%;
+ padding-left: 12px;
+ margin: 3px 0 20px 5px;
+}
+
+.comments form.post-comments {
+ width: 560px;
+ margin: 3px 30px 4px 45px;
+}
+
+.comments textarea {
+ display: block;
+ height: 42px;
+ width: 572px;
+ margin: 6px 0 5px 1px;
+ font-family: sans-serif;
+ outline: none;
+ overflow:auto;
+ font-size: 12px;
+ line-height: 140%;
+ padding-left:2px;
+}
+
+.comments input {
+ margin-left: 10px;
+ margin-top: 1px;
+ vertical-align: top;
+ width: 100px;
+}
+
+.comments .counter {
+ display: inline-block;
+ width: 245px;
+ vertical-align: top;
+}
+
+.comments .controls a {
+ color: #888888;
+ padding: 0 3px 2px;
+}
+
+.comments .controls a:hover {
+ background-color: #777777;
+ color: white;
+ text-decoration: none;
+}
+
+.comments .help-text{
+ float: right;
+ text-align:right;
+ color: gray;
+ margin-bottom: 0px;
+ margin-top: 0px;
+ line-height: 50%;
+}
+
+span.text-counter {
+ margin-right: 20px;
+}
+
+span.form-error {
+ color: #990000;
+ font-weight: normal;
+ margin-left: 5px;
+}
+
+p.form-item {
+ margin: 0px;
+}
+
+div.comments {
+ padding: 0;
+}
+
+.comments .button {
+ color: black;
+ font-size: 11px;
+ background: #eeeeee;
+ padding: 3px;
+ cursor: pointer;
+}
+
+.comment a {
+ background-color: inherit;
+ color: blue;
+ padding: 0;
+}
+
+.comment a.author, a.author:hover {
+ background-color: inherit;
+ color: blue;
+ padding: 0;
+}
+
+.comment a.author:hover {
+ text-decoration: underline;
+}
+
+.accepted-answer {
+ background-color: #EBFFE6;
+ border-bottom-color: #9BD59B;
+}
+
+.accepted-answer .comments .button {
+ background-color: #CCFFBF;
+}
+
+.accepted-answer .comments {
+ background-color: #CCFFBF;
+}
+
+.answered {
+ background: #CCC;
+ color: #999;
+}
+
+.answered-accepted {
+ background: #CCC;
+ color: #763333;
+}
+
+.answered-by-owner {
+ background: #E9E9FF;
+}
+
+.answered-by-owner .comments .button {
+ background-color: #E6ECFF;
+}
+
+.answered-by-owner .comments {
+ background-color: #E6ECFF;
+}
+
+.answered-accepted strong {
+ color: #E1E818;
+}
+
+.answer-img-accept:hover {
+ background: url(../images/vote-accepted-on.png)
+}
+
+.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;
+}
+
+.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%;
+}
+
+span.form-error {
+ color: #990000;
+ font-size: 90%;
+ font-weight: normal;
+ margin-left: 5px;
+}
+
+.title-desc {
+ color: #666666;
+ font-size: 90%;
+}
+
+/*adjustment for editor preview*/
+#editor {
+ font-size: 100%;
+ min-height: 200px;
+ line-height: 18px;
+ width: 702px;
+ margin:0;
+}
+
+#id_title {
+ width: 100%;
+}
+
+.wmd-preview {
+ margin: 3px 0 5px 0;
+ padding: 6px;
+ width: 691px;
+ background-color: #F5F5F5;
+ min-height: 20px;
+ overflow: auto;
+}
+
+.wmd-preview pre {
+ background-color: #E7F1F8;
+
+}
+
+.wmd-preview blockquote {
+ background-color: #eee;
+}
+
+.wmd-preview IMG {
+ max-width: 600px;
+}
+
+.preview-toggle {
+ width: 100%;
+ color: #666; /*letter-spacing:1px;*/
+ text-align: left;
+}
+
+.preview-toggle span:hover {
+ cursor: pointer;
+}
+
+.after-editor {
+ margin-top: 10px;
+}
+
+.checkbox {
+ margin-left:5px;
+ font-weight:normal;
+ cursor:help
+}
+
+.question-options {
+ margin-top: 1px;
+ float: left;
+ color: #666;
+ line-height: 13px;
+}
+.question-options label {
+ vertical-align: text-bottom;
+}
+
+.ask-page input.submit,
+.edit-question-page input.submit {
+ float: left;
+}
+
+.edit-content-html {
+ border-top: 1px dotted #D8D2A9;
+ border-bottom: 1px dotted #D8D2A9;
+ margin: 5px 0 5px 0;
+}
+
+.revision {
+ margin: 10px 0 10px 0;
+ width: 100%;
+ font-size: 13px;
+}
+
+.revision .header {
+ background-color: #eee;
+ padding: 5px;
+ cursor: pointer;
+}
+
+.revision .author {
+ background-color: #E9E9FF;
+}
+
+.revision .summary {
+ padding: 5px 0 10px 0;
+}
+
+.revision .summary span {
+ background-color: yellow;
+ padding-left: 3px;
+ padding-right: 3px;
+ display: inline;
+}
+
+.revision h1 {
+ font-size: 130%;
+ font-weight: 600;
+ padding: 15px 0 15px 0;
+}
+
+.revision-mark {
+ width: 200px;
+ text-align: left;
+ display: inline-block;
+ font-size: 90%;
+ overflow: hidden;
+}
+
+.revision-number {
+ font-size: 300%;
+ font-weight: bold;
+ font-family: sans-serif;
+}
+
+.revision .answerbody {
+ padding: 10px 0 5px 10px;
+}
+
+/* Revision pages */
+del {
+ color: #FF5F5F;
+}
+
+del .post-tag {
+ color: #FF5F5F;
+}
+
+ins {
+ background-color: #97ff97;
+}
+
+ins p{
+ background-color: #97ff97;
+}
+
+ins .post-tag {
+ background-color: #97ff97;
+}
+
+/*用户资料页é¢*/
+.count {
+ font-family: Arial;
+ font-size: 200%;
+ font-weight: 700;
+ color: #777
+}
+
+.scoreNumber {
+ font-family: Arial;
+ font-size: 35px;
+ font-weight: 800;
+ color: #777;
+ line-height: 40px; /*letter-spacing:0px*/
+ margin-top: 3px;
+}
+
+.user-details {
+ font-size: 13px;
+}
+
+.user-about {
+ background-color: #EEEEEE;
+ height: 200px;
+ line-height: 20px;
+ overflow: auto;
+ padding: 10px;
+ width: 90%;
+}
+
+/*
+.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;
+}
+
+.relativetime {
+ font-weight: bold;
+ text-decoration: none;
+}
+
+.narrow .tags {
+ float: left;
+}
+
+.answer-summary {
+ display: block;
+ clear: both;
+ padding: 3px;
+}
+
+.answer-votes {
+ background-color: #EEEEEE;
+ color: #555555;
+ float: left;
+ font-family: Arial;
+ font-size: 110%;
+ font-weight: bold;
+ height: 15px;
+ padding: 4px 4px 5px;
+ text-align: center;
+ text-decoration: none;
+ width: 20px;
+ margin-right: 10px;
+}
+
+.vote-count {
+ font-family: Arial;
+ font-size: 160%;
+ font-weight: 700;
+ color: #777;
+}
+
+/* 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;
+}
+
+.footerLinks {
+ color: #EEE;
+ font-size: 13px; /* letter-spacing:1px;*/
+}
+
+.footerLinks a {
+ color: #FFF;
+ font-size: 13px;
+}
+
+a.comment {
+ background: #EEE;
+ color: #993300;
+ padding: 5px;
+}
+
+a.offensive {
+ color: #999;
+}
+
+.user {
+ padding: 5px;
+ line-height: 140%;
+ width: 170px;
+}
+
+.user ul {
+ margin: 0;
+ list-style-type: none;
+}
+
+.user .thumb {
+ clear: both;
+ float: left;
+ margin-right: 4px;
+ display: inline;
+}
+
+.message {
+ padding: 5px;
+ margin: 10px 0 10px 0;
+ background-color: #eee;
+ border: 1px solid #aaaaaa;
+}
+
+.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;
+}
+
+.ask-body {
+ padding-right: 10px;
+}
+
+
+.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: 15px;
+}
+
+.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 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;
+}
+
+.post-controls, .post-tags {
+ font-size: 11px;
+ line-height: 12px;
+ min-width: 200px;
+ padding-left: 5px;
+ margin-bottom: 5px;
+}
+
+.post-controls {
+ clear: left;
+ float: left;
+}
+
+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;
+}
+
+.post-update-info-container {
+ float: right;
+ min-width: 85px;
+}
+
+.post-update-info {
+ display: inline-block;
+ float: right;
+ font-size: 11px;
+ width: 190px;
+ margin-bottom: 5px;
+ line-height: 14px
+}
+
+.post-update-info p {
+ line-height: 13px;
+ font-size: 11px;
+ margin: 0 0 2px 1px;
+ padding: 0;
+}
+
+.post-update-info .gravatar {
+ float: left;
+ margin-right: 4px;
+}
+
+
+.post-update-info p.tip {
+ color: #444;
+}
+
+#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 */
+.answer-body a {
+ color:#0000ff;
+}
+.question-body a {
+ color:#0000ff;
+}
+.question-body li {
+ margin-bottom:0.7em;
+}
+.answer-body li {
+ margin-bottom:0.7em;
+}
+.wmd-preview a {
+ color:#0000ff;
+}
+.wmd-preview li {
+ margin-bottom:0.7em;
+}
+
+.karma-summary {
+ padding:5px;
+ font-size:13px;
+}
+
+.karma-summary h3 {
+ text-align: center;
+ font-weight: bold;
+ padding:5px;
+}
+
+.karma-diagram {
+ width:377px;
+ height:300px;
+ float:left;
+ margin-right:10px;
+}
+
+.karma-details {
+ float:right;
+ width:300px;
+ height:250px;
+ overflow-y:auto;
+ word-wrap:break-word;
+}
+
+.karma-gained {
+ font-weight:bold;
+ background:#eee;
+ width:20px;
+ color:green;
+ padding:5px;
+}
+
+.karma-lost {
+ font-weight:bold;
+ background:#eee;
+ width:20px;
+ color:red;
+ padding:5px;
+}
+
+.search-result-summary {
+ font-weight: bold;
+ font-size:18px;
+ line-height:22px;
+ margin:0px 0px 0px 0px;
+ padding:2px 0 0 0;
+ float: left;
+}
+.search-tips {
+ font-size:12px;
+ line-height:12px;
+ color: #555;
+ margin:0 0 5px 0;
+ padding:0px;
+ clear:both;
+}
+.search-tips a {
+ text-decoration: underline;
+ color: #555;
+}
+
+.faq-rep-item {
+ text-align:right;
+ padding-right:5px;
+}
+
+
+.user-info-table .gravatar {
+ margin:0;
+}
+
+.vote-notification {
+ z-index: 1;
+ cursor: pointer;
+ display: none;
+ position: absolute;
+ padding: 15px;
+ color: white;
+ background-color: darkred;
+ text-align: center;
+}
+
+.vote-notification a {
+ color: white;
+ text-decoration: underline;
+}
+
+#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;
+}
+
+.facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon {
+ background: url(../images/sprite.png) no-repeat;
+ display:block;
+ text-indent:-100em;
+ height:25px;
+ width:25px;
+}
+.facebook-share.icon {
+ background-position: -25px 0px;
+}
+.identica-share.icon {
+ background-position: -85px 0px;
+}
+.twitter-share.icon {
+ margin-top:10px;
+ background-position: 0px 0px;
+}
+.linkedin-share.icon {
+ background-position: -55px 0px;
+}
+/* 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 { 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; }
+}
+
+.follow-toggle {
+ border: 2px solid;
+ -moz-border-radius:5px;
+ -webkit-border-radius:5px;
+ border-radius: 5px;
+ height: auto;
+ width: 200px;
+ float:left;
+ padding: 0;
+ margin-right:100%;
+ margin-bottom: 10px;
+}
+
+.follow-toggle .follow{
+ font-color: #000;
+ font-style:normal;
+ background: #4cd46f;
+}
+
+.follow-toggle .follow:hover{
+ font-weight: bold;
+}
+
+.follow-toggle .unfollow{
+ background: #4cd46f;
+}
+
+.follow-toggle .unfollow:hover{
+ background: #d94849;
+}
+
+.follow-toggle .unfollow div.unfollow-red{
+ display:none;
+}
+
+.follow-toggle .unfollow div.unfollow-green{
+ background: #4cd46f;
+}
+
+.follow-toggle .unfollow:hover div.unfollow-red{
+ display:inline;
+ color:#fff;
+ font-weight:bold;
+}
+
+.follow-toggle .unfollow:hover div.unfollow-green{
+ display:none;
+}
diff --git a/askbot/skins/default/templates/authopenid/macros.html b/askbot/skins/common/templates/authopenid/authopenid_macros.html
index 477d277c..477d277c 100644
--- a/askbot/skins/default/templates/authopenid/macros.html
+++ b/askbot/skins/common/templates/authopenid/authopenid_macros.html
diff --git a/askbot/skins/default/templates/authopenid/changeemail.html b/askbot/skins/common/templates/authopenid/changeemail.html
index 1316a048..1316a048 100644
--- a/askbot/skins/default/templates/authopenid/changeemail.html
+++ b/askbot/skins/common/templates/authopenid/changeemail.html
diff --git a/askbot/skins/default/templates/authopenid/complete.html b/askbot/skins/common/templates/authopenid/complete.html
index 969a173f..969a173f 100644
--- a/askbot/skins/default/templates/authopenid/complete.html
+++ b/askbot/skins/common/templates/authopenid/complete.html
diff --git a/askbot/skins/default/templates/authopenid/confirm_email.txt b/askbot/skins/common/templates/authopenid/confirm_email.txt
index 1a0f4e63..1a0f4e63 100644
--- a/askbot/skins/default/templates/authopenid/confirm_email.txt
+++ b/askbot/skins/common/templates/authopenid/confirm_email.txt
diff --git a/askbot/skins/default/templates/authopenid/email_validation.txt b/askbot/skins/common/templates/authopenid/email_validation.txt
index 9c5baa8a..9c5baa8a 100644
--- a/askbot/skins/default/templates/authopenid/email_validation.txt
+++ b/askbot/skins/common/templates/authopenid/email_validation.txt
diff --git a/askbot/skins/common/templates/authopenid/logout.html b/askbot/skins/common/templates/authopenid/logout.html
new file mode 100644
index 00000000..1ac6705c
--- /dev/null
+++ b/askbot/skins/common/templates/authopenid/logout.html
@@ -0,0 +1,31 @@
+{% extends "one_column_body.html" %}
+<!-- template logout.html -->
+{% block title %}{% spaceless %}{% trans %}Logout{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1 class="section-title">{% trans %}You have successfully logged out{% endtrans %}</h1>
+{% if have_federated_login_methods %}
+ <p>{% trans %}However, you still may be logged in to your OpenID provider. Please logout of your provider if you wish to do so.{% endtrans %}</p>
+ {% if settings.FACEBOOK_KEY and settings.FACEBOOK_SECRET %}
+ <div id="fb-root"></div>
+ <script src="http://connect.facebook.net/en_US/all.js"></script>
+ <script>
+ FB.init({appId: '{{settings.FACEBOOK_KEY}}', status: true, cookie: true, xfbml: true});
+ </script>
+ {% endif %}
+{% endif %}
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $(document).ready(function(){
+ //logout user from facebook
+ if (typeof FB != 'undefined'){
+ FB.getLoginStatus(function(response){
+ if (response.session){
+ FB.logout();
+ }
+ });
+ }
+ });
+ </script>
+{% endblock %}
+<!-- end logout.html -->
diff --git a/askbot/skins/default/templates/authopenid/providers_javascript.html b/askbot/skins/common/templates/authopenid/providers_javascript.html
index 0fe72eb3..0fe72eb3 100644
--- a/askbot/skins/default/templates/authopenid/providers_javascript.html
+++ b/askbot/skins/common/templates/authopenid/providers_javascript.html
diff --git a/askbot/skins/common/templates/authopenid/signin.html b/askbot/skins/common/templates/authopenid/signin.html
new file mode 100644
index 00000000..4c894aa3
--- /dev/null
+++ b/askbot/skins/common/templates/authopenid/signin.html
@@ -0,0 +1,241 @@
+{% extends "two_column_body.html" %}
+{% import "authopenid/authopenid_macros.html" as login_macros %}
+<!-- signin.html -->
+{% block title %}{% spaceless %}{% trans %}User login{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle %}
+ <link rel="stylesheet" type="text/css" media="screen" href="{{"/jquery-openid/openid.css"|media}}"/>
+{% endblock %}
+{% block content %}
+{% if have_buttons or view_subtype == 'email_sent' %}
+ <h1 class="section-title">{{page_title}}</h1>
+{% endif %}
+ {% if answer %}
+ <div class="message">
+ {% trans title=answer.question.title, summary=answer.summary %}
+ 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
+ {{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 %}
+ {% 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 %}
+ {% else %}
+ {% trans %}Please add a more permanent login method by clicking one of the icons below, to avoid logging in via email each time.{% endtrans %}
+ {% endif %}
+ {% elif view_subtype == 'change_openid' and have_buttons %}
+ {% if existing_login_methods %}
+ {% trans %}Click on one of the icons below to add a new login method or re-validate an existing one.{% endtrans %}
+ {% else %}
+ {% trans %}You don't have a method to log in right now, please add one or more by clicking any of the icons below.{% endtrans %}
+ {% endif %}
+ {% elif view_subtype == 'email_sent' %}
+ {% trans %}Please check your email and visit the enclosed link to re-connect to your account{% endtrans %}
+ {% endif %}
+ </p>
+ {% if openid_error_message %}
+ <p class="warning">{{ openid_error_message }}</p>
+ {% endif %}
+ {% if view_subtype != 'email_sent' and view_subtype != 'bad_key' %}
+ <form id="signin-form" method="post" action="{{ settings.LOGIN_URL }}">{% csrf_token %}
+ {# in this branch - the real signin view we display the login icons
+ here we hide the local login button only if admin
+ wants to always show the password login form - then
+ the button is useless.
+ #}
+ {{ login_form.login_provider_name }}
+ {{ login_form.next }}
+ {{
+ login_macros.provider_buttons(
+ login_form = login_form,
+ major_login_providers = major_login_providers,
+ minor_login_providers = minor_login_providers,
+ hide_local_login = settings.SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN,
+ settings = settings,
+ logged_in = user.is_authenticated()
+ )
+ }}
+ {% if use_password_login == True %}
+ <fieldset
+ id="password-fs"
+ {% if user.is_anonymous() %}
+ {% if not login_form.username.errors and not login_form.password_login_failed %}
+ {% if not settings.SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN %}
+ style="display:none;"
+ {%endif%}
+ {% endif %}
+ {% else %}
+ {% if not login_form.new_password.errors and not login_form.new_password_retyped.errors %}
+ {% if not settings.SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN %}
+ style="display:none;"
+ {% endif%}
+ {% endif %}
+ {% endif %}
+ >
+ {{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 %}
+ <p class="hint">{% trans %}(or select another login method above){% endtrans %}</p>
+ {% endif %}
+ {% if login_form.password_login_failed %}
+ <p class="error">{% trans %}Login failed, please try again{% endtrans %}</p>
+ {% endif %}
+ <table class="login">
+ <tr>
+ <td><label for="id_username">{% trans %}Login or email{% endtrans %}</label></td>
+ <td>{{login_form.username}}</td>
+ </tr>
+ <tr>
+ <td><label for="id_password">{% trans %}Password{% endtrans %}</label></td>
+ <td>{{login_form.password}}</td>
+ </tr>
+ </table>
+ <p id="local_login_buttons">
+ <input class="submit-b" name="login_with_password" type="submit" value="{% trans %}Login{% 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 %}
+ </p>
+ {% elif settings.USE_LDAP_FOR_PASSWORD_LOGIN == False %}
+ <h2 id="password-heading">
+ {% trans %}To change your password - please enter the new one twice, then submit{% endtrans %}
+ </h2>
+ <table class="login">
+ <tr>
+ <td><label for="id_new_password">{% trans %}New password{% endtrans %}</label></td>
+ <td>
+ {{login_form.new_password}}
+ <span class="error">{{login_form.new_password.errors[0]}}</span>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="id_new_password_retyped">{% trans %}Please, retype{% endtrans %}</label></td>
+ <td>
+ {{login_form.new_password_retyped}}
+ <span class="error">{{login_form.new_password_retyped.errors[0]}}</span>
+ </td>
+ </tr>
+ </table>
+ <p id="local_login_buttons">
+ <input class="submit-b" name="change_password" type="submit" value="{% trans %}Change password{% endtrans %}" />
+ </p>
+ {% endif %}
+ </fieldset>
+ {% endif %}
+ </form>
+ {% if user.is_authenticated() and existing_login_methods and settings.ALLOW_ADD_REMOVE_LOGIN_METHODS %}
+ <div
+ id='existing-login-methods'
+ {% if login_form.password_change_failed %}
+ style="display:none";
+ {% endif %}
+ >
+ <h2 id='ab-show-login-methods'>
+ {% trans %}Here are your current login methods{% endtrans %}
+ </h2>
+ <table id='ab-existing-login-methods'>
+ <tr>
+ <th>{% trans %}provider{% endtrans %}</th>
+ <th>{% trans %}last used{% endtrans %}</th>
+ <th>{% trans %}delete, if you like{% endtrans %}</th>
+ </tr>
+ {% for login_method in existing_login_methods %}
+ <tr class="ab-provider-row">
+ <td class="ab-provider-name">
+ {{login_method.provider_name}}
+ </td>
+ <td>
+ {% if login_method.last_used_timestamp %}
+ {{login_method.last_used_timestamp|diff_date}}
+ {% endif %}
+ </td>
+ <td>
+ {% if login_method.is_deletable %}
+ <button>{% trans %}delete{% endtrans %}</button>
+ {% else %}
+ {% trans %}cannot be deleted{% endtrans %}
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+ </table>
+ </div>
+ {% endif %}
+ {% endif %}
+ {% if view_subtype != 'email_sent' or view_subtype == 'bad_key' %}
+ {% if user.is_anonymous() and settings.ALLOW_ACCOUNT_RECOVERY_BY_EMAIL %}
+ <form id="account-recovery-form" action="{% url user_account_recover %}" method="post">{% csrf_token %}
+ {% if view_subtype != 'bad_key' %}
+ <h2 id='account-recovery-heading'>{% trans %}Still have trouble signing in?{% endtrans %}</h2>
+ {% endif %}
+ <p class="hint">
+ <span class="text">
+ {% if view_subtype == 'bad_key' %}
+ {% trans %}Please, enter your email address below and obtain a new key{% endtrans %}
+ {% else %}
+ {% trans %}Please, enter your email address below to recover your account{% endtrans %}
+ {% endif %}
+ </span>
+ <span style="display:none" class="link"> - <a href="#">{% trans %}recover your account via email{% endtrans %}</a></span>
+ </p>
+ <fieldset id='email-input-fs'>
+ {% if account_recovery_form.email.errors %}
+ <p class="error">{{account_recovery_form.email.errors[0]}}</p>
+ {% endif %}
+ {{ account_recovery_form.email }}
+ <input
+ class="submit-b"
+ type="submit"
+ {% if view_subtype == 'bad_key' %}
+ value="{% trans %}Send a new recovery key{% endtrans %}"
+ {% else %}
+ value="{% trans %}Recover your account via email{% endtrans %}"
+ {% endif %}
+ />
+ </fieldset>
+ </form>
+ {% 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%}
+<!-- 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
new file mode 100644
index 00000000..9911facf
--- /dev/null
+++ b/askbot/skins/common/templates/authopenid/signup_with_password.html
@@ -0,0 +1,58 @@
+{% extends "one_column_body.html" %}
+{% import "authopenid/authopenid_macros.html" as login_macros %}
+<!--signup.html-->
+{% block title %}{% spaceless %}{% trans %}Signup{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle %}
+ <link rel="stylesheet" type="text/css" media="screen" href="{{"/jquery-openid/openid.css"|media}}"/>
+{% endblock %}
+{% block content %}
+{% if settings.PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS == True %}
+ <h1 class="section-title">{% trans %}Please register by clicking on any of the icons below{% endtrans %}</h1>
+ <form id="signin-form" method="post" action="{{ settings.LOGIN_URL }}">{% csrf_token %}
+ {# hide_local_login == True because it is password reg form #}
+ {{
+ login_macros.provider_buttons(
+ login_form = login_form,
+ major_login_providers = major_login_providers,
+ minor_login_providers = minor_login_providers,
+ hide_local_login = True,
+ settings = settings
+ )
+ }}
+ </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>
+{%endif%}
+<form action="{% url user_signup_with_password %}" method="post" accept-charset="utf-8">{% csrf_token %}
+ {{form.login_provider}}
+ <ul class="form-horizontal-rows">
+ <li><label for="usename_id">{{form.username.label}}</label>{{form.username}}{{form.username.errors}}</li>
+ <li><label for="email_id">{{form.email.label}}</label>{{form.email}}{{form.email.errors}}</li>
+ <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>
+ <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>
+ {% if settings.USE_RECAPTCHA %}
+ <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 %}" />
+ {% 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>
+ {% endif %}
+ </div>
+</form>
+{% endblock %}
+{%block endjs%}
+{%include "authopenid/providers_javascript.html" %}
+{%endblock%}
+<!--end signup.html-->
diff --git a/askbot/skins/default/templates/avatar/add.html b/askbot/skins/common/templates/avatar/add.html
index 68a188ef..68a188ef 100644
--- a/askbot/skins/default/templates/avatar/add.html
+++ b/askbot/skins/common/templates/avatar/add.html
diff --git a/askbot/skins/default/templates/avatar/change.html b/askbot/skins/common/templates/avatar/change.html
index 7921a662..7921a662 100644
--- a/askbot/skins/default/templates/avatar/change.html
+++ b/askbot/skins/common/templates/avatar/change.html
diff --git a/askbot/skins/common/templates/avatar/confirm_delete.html b/askbot/skins/common/templates/avatar/confirm_delete.html
new file mode 100644
index 00000000..ee3d10d7
--- /dev/null
+++ b/askbot/skins/common/templates/avatar/confirm_delete.html
@@ -0,0 +1,15 @@
+{% extends "user_profile/user.html" %}
+{% block profilesection %}{% trans %}delete avatar{% endtrans %}{% endblock %}
+{% block usercontent %}
+ <p>{% trans %}Please select the avatars that you would like to delete.{% endtrans %}</p>
+ {% if not avatars %}
+ <p>{% trans avatar_change_url="avatar_change"|url %}You have no avatars to delete. Please <a href="{{ avatar_change_url }}">upload one</a> now.{% endtrans %}</p>
+ {% else %}
+ <form method="POST" action="{% url avatar_delete %}">{% csrf_token %}
+ <ul>
+ {{ delete_avatar_form.as_ul() }}
+ </ul>
+ <p><input type="submit" value="{% trans %}Delete These{% endtrans %}" /></p>
+ </form>
+ {% endif %}
+{% endblock %}
diff --git a/askbot/skins/common/templates/one_column_body.html b/askbot/skins/common/templates/one_column_body.html
new file mode 100644
index 00000000..852f8fe5
--- /dev/null
+++ b/askbot/skins/common/templates/one_column_body.html
@@ -0,0 +1,8 @@
+{% extends "base.html" %}
+{% block body_class %}one-col{% endblock %}
+{% block body %}
+<div id="ContentFull">
+ {% block content%}
+ {% endblock%}
+</div>
+{% endblock %}
diff --git a/askbot/skins/common/templates/question/answer_author_info.html b/askbot/skins/common/templates/question/answer_author_info.html
new file mode 100644
index 00000000..f17cb62c
--- /dev/null
+++ b/askbot/skins/common/templates/question/answer_author_info.html
@@ -0,0 +1,6 @@
+{{
+ macros.post_last_updater_and_creator_info(
+ answer,
+ settings.MIN_REP_TO_EDIT_WIKI
+ )
+}}
diff --git a/askbot/skins/common/templates/question/answer_comments.html b/askbot/skins/common/templates/question/answer_comments.html
new file mode 100644
index 00000000..1a1e97fb
--- /dev/null
+++ b/askbot/skins/common/templates/question/answer_comments.html
@@ -0,0 +1,10 @@
+{{
+ macros.post_comments_widget(
+ post = answer,
+ 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/answer_controls.html b/askbot/skins/common/templates/question/answer_controls.html
new file mode 100644
index 00000000..4d26ffb9
--- /dev/null
+++ b/askbot/skins/common/templates/question/answer_controls.html
@@ -0,0 +1,33 @@
+{% set pipe=joiner('<span class="sep">|</span>') %}
+<span class="linksopt">{{ pipe() }}
+ <a class="permant-link"
+ href="{{ answer.get_absolute_url() }}"
+ title="{% trans %}answer permanent link{% endtrans %}">
+ {% trans %}permanent 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_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 %}</a>
+ {% 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>
+{% 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 %}
diff --git a/askbot/skins/common/templates/question/answer_vote_buttons.html b/askbot/skins/common/templates/question/answer_vote_buttons.html
new file mode 100644
index 00000000..0ff57e4b
--- /dev/null
+++ b/askbot/skins/common/templates/question/answer_vote_buttons.html
@@ -0,0 +1,27 @@
+{{ 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}}"
+ {% else %}
+ src="{{'/images/vote-accepted.png'|media}}"
+ {% 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 %}
diff --git a/askbot/skins/common/templates/question/closed_question_info.html b/askbot/skins/common/templates/question/closed_question_info.html
new file mode 100644
index 00000000..73ff4e47
--- /dev/null
+++ b/askbot/skins/common/templates/question/closed_question_info.html
@@ -0,0 +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>
+</div>
diff --git a/askbot/skins/common/templates/question/question_author_info.html b/askbot/skins/common/templates/question/question_author_info.html
new file mode 100644
index 00000000..e43f8931
--- /dev/null
+++ b/askbot/skins/common/templates/question/question_author_info.html
@@ -0,0 +1,6 @@
+{{
+ macros.post_last_updater_and_creator_info(
+ question,
+ settings.MIN_REP_TO_EDIT_WIKI
+ )
+}}
diff --git a/askbot/skins/common/templates/question/question_comments.html b/askbot/skins/common/templates/question/question_comments.html
new file mode 100644
index 00000000..36d175a5
--- /dev/null
+++ b/askbot/skins/common/templates/question/question_comments.html
@@ -0,0 +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
+ )
+}}
diff --git a/askbot/skins/common/templates/question/question_controls.html b/askbot/skins/common/templates/question/question_controls.html
new file mode 100644
index 00000000..9de54526
--- /dev/null
+++ b/askbot/skins/common/templates/question/question_controls.html
@@ -0,0 +1,31 @@
+{% 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 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_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 %}</a>
+ {% if request.user|can_see_offensive_flags(question) %}
+ <span class="darkred">{% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %}</span>
+ {% endif %}
+</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>
+{% endif %}
diff --git a/askbot/skins/common/templates/question/question_tags.html b/askbot/skins/common/templates/question/question_tags.html
new file mode 100644
index 00000000..d104fe05
--- /dev/null
+++ b/askbot/skins/common/templates/question/question_tags.html
@@ -0,0 +1,7 @@
+{{ macros.tag_list_widget(
+ tags = question.get_tag_names(),
+ id = 'question-tags',
+ css_class = 'post-tags tags',
+ 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
new file mode 100644
index 00000000..ce6b18ff
--- /dev/null
+++ b/askbot/skins/common/templates/question/question_vote_buttons.html
@@ -0,0 +1,4 @@
+{{ macros.post_vote_buttons(
+ post = question,
+ visitor_vote = user_question_vote)
+}}
diff --git a/askbot/skins/common/templates/question/share_buttons.html b/askbot/skins/common/templates/question/share_buttons.html
new file mode 100644
index 00000000..5b4fc7ac
--- /dev/null
+++ b/askbot/skins/common/templates/question/share_buttons.html
@@ -0,0 +1,5 @@
+{% if settings.ENABLE_SHARING_TWITTER %}{{ macros.share(site = 'twitter', icon = True) }}{% endif %}
+{% if settings.ENABLE_SHARING_FACEBOOK %}{{ macros.share(site = 'facebook', icon = True) }}{% endif %}
+{% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', icon = True) }}{% endif %}
+{% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', icon = True) }}{% endif %}
+{% if settings.ENABLE_SHARING_GOOGLE %}<g:plusone size="small" count="false"></g:plusone>{% endif %}
diff --git a/askbot/skins/common/templates/two_column_body.html b/askbot/skins/common/templates/two_column_body.html
new file mode 100644
index 00000000..4c3193be
--- /dev/null
+++ b/askbot/skins/common/templates/two_column_body.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+{% block body_class %}two-col{% endblock %}
+{% block body %}
+<div id="ContentLeft">
+ {% block content%}
+ {% endblock%}
+</div>
+<div id="ContentRight">
+ {% block sidebar%}
+ {% endblock%}
+</div>
+{% endblock %}
diff --git a/askbot/skins/common/templates/widgets/edit_post.html b/askbot/skins/common/templates/widgets/edit_post.html
new file mode 100644
index 00000000..16970a78
--- /dev/null
+++ b/askbot/skins/common/templates/widgets/edit_post.html
@@ -0,0 +1,61 @@
+{% if edit_title %}
+ <div class="form-item">
+ <label for="id_title" ><strong>{{ post_form.title.label_tag() }}:</strong></label> <span class="form-error"></span><br/>
+ {{ post_form.title }} {{ post_form.title.errors }}
+ <div class="title-desc">
+ {{ post_form.title.help_text }}
+ </div>
+ </div>
+{% endif %}
+<div id="wmd-button-bar" class="wmd-panel"></div>
+<div class="form-item">
+ {{ post_form.text }}{# this element is resizable and will be wrapped by js #}
+ <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>
+ {% trans %}(required){% endtrans %}
+ </label>
+ {% endif %}
+ <span class="form-error">{{ post_form.tags.errors }}</span><br/>
+ {{ post_form.tags }}
+ <div class="title-desc">
+ {{ post_form.tags.help_text }}
+ </div>
+ </div>
+{% endif %}
+{% if 'summary' in post_form['fields'] %}
+ <div class="form-item">
+ <strong>{{ post_form.summary.label_tag() }}</strong> <br/>
+ {{ post_form.summary }}
+ <div class="title-desc">
+ {{ post_form.summary.help_text }}
+ </div>
+ <div class="form-error" >{{ post_form.summary.errors }}</div>
+ </div>
+{% endif %}
+<div class="preview-toggle">
+ <span
+ id="pre-collapse"
+ title="{% trans %}Toggle the real time Markdown editor preview{% endtrans %}"
+ >
+ [{% trans %}hide preview{% endtrans %}]
+ </span>
+</div>
+<div id="previewer" class="wmd-preview"></div>
diff --git a/askbot/skins/common/templates/widgets/related_tags.html b/askbot/skins/common/templates/widgets/related_tags.html
new file mode 100644
index 00000000..9e1bfd86
--- /dev/null
+++ b/askbot/skins/common/templates/widgets/related_tags.html
@@ -0,0 +1,22 @@
+{% cache 0 "tags" tags search_tags scope sort query context.page context.page_size language_code %}
+ <div class="box">
+ <h2>{% trans %}Related tags{% endtrans %}</h2>
+ {% if tag_list_type == 'list' %}
+ <ul id="related-tags" class="tags">
+ {% for tag in tags %}
+ <li>
+ {{ macros.tag_widget(
+ tag.name,
+ html_tag = 'div',
+ extra_content = '<span class="tag-number">&#215; ' ~
+ tag.local_used_count|intcomma ~ '</span>',
+ url_params = query_string,
+ )}}
+ </li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }}
+ {% endif %}
+ </div>
+{% endcache %}
diff --git a/askbot/skins/common/templates/widgets/search_bar.html b/askbot/skins/common/templates/widgets/search_bar.html
new file mode 100644
index 00000000..c696fba3
--- /dev/null
+++ b/askbot/skins/common/templates/widgets/search_bar.html
@@ -0,0 +1,50 @@
+{% if active_tab != "ask" %}
+{% spaceless %}
+<div id="searchBar">
+ {# url action depends on which tab is active #}
+ <form
+ {% if active_tab == "tags" %}
+ action="{% url tags %}"
+ {% elif active_tab == "users" %}
+ action="{% url users %}"
+ {% else %}
+ action="{% url questions %}"
+ {% endif %}
+ method="get">
+ <input type="submit" value="" name="search" class="searchBtn" />
+ {% if active_tab == "tags" %}
+ <input type="hidden" name="t" value="tag"/>
+ {% else %}
+ {% if active_tab == "users" %}
+ <input type="hidden" name="t" value="user"/>
+ {% endif %}
+ {% endif %}
+ {# class was searchInput #}
+ <input
+ {% if query and request.user.is_authenticated() %}
+ class="searchInputCancelableAuth"
+ {% elif query %}
+ class="searchInputCancelable"
+ {% elif request.user.is_authenticated() %}
+ class="searchInputAuth"
+ {% else %}
+ class="searchInput"
+ {% endif %}
+ type="text"
+ autocomplete="off"
+ value="{{ query|default_if_none('') }}"
+ name="query"
+ id="keywords"/>
+ {% if query %}{# query is only defined by questions view #}
+ <input type="button"
+ value="X"
+ name="reset_query"
+ {# todo - make sure it works on Enter keypress #}
+ onclick="window.location.href='{% url questions %}{{ query_string|remove_from_url('query') }}'"
+ class="cancelSearchBtn"/>
+ {% endif %}
+
+ </form>
+</div>
+{% endspaceless %}
+{% endif %}
diff --git a/askbot/skins/common/templates/widgets/tag_selector.html b/askbot/skins/common/templates/widgets/tag_selector.html
new file mode 100644
index 00000000..7db1912d
--- /dev/null
+++ b/askbot/skins/common/templates/widgets/tag_selector.html
@@ -0,0 +1,46 @@
+{# todo - maybe disable navigation from ignored tags here when "hide" is on - with js? #}
+{% import "macros.html" as macros %}
+<div id="tagSelector" class="box">
+ <h2>{% trans %}Interesting tags{% endtrans %}</h2>
+ {{
+ macros.tag_list_widget(
+ interesting_tag_names,
+ deletable = True,
+ css_class = 'interesting marked-tags'
+ )
+ }}
+ {# todo - add this via js
+ "remove '%(tag_name)s' from the list of interesting tags"|
+ format(tag_name = tag_name)
+ #}
+ <div class="inputs">
+ <input id="interestingTagInput" autocomplete="off" type="text"/>&nbsp;
+ <input id="interestingTagAdd" type="submit" value="{% trans %}add{% endtrans %}"/>
+ </div>
+ <h2>{% trans %}Ignored tags{% endtrans %}</h2>
+ {{
+ macros.tag_list_widget(
+ ignored_tag_names,
+ deletable = True,
+ css_class = 'ignored marked-tags'
+ )
+ }}
+ {# 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="ignoredTagInput" autocomplete="off" type="text"/>&nbsp;
+ <input id="ignoredTagAdd" type="submit" value="{% trans %}add{% endtrans%}"/>
+ </div>
+ <h3>{% trans %}Display tag filter{% 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
+ )
+ }}
+ </div>
+</div>
diff --git a/askbot/skins/default/media/images/accept.png b/askbot/skins/default/media/images/accept.png
new file mode 100644
index 00000000..16262c7a
--- /dev/null
+++ b/askbot/skins/default/media/images/accept.png
Binary files differ
diff --git a/askbot/skins/default/media/images/answers-background.png b/askbot/skins/default/media/images/answers-background.png
new file mode 100644
index 00000000..0e9b4788
--- /dev/null
+++ b/askbot/skins/default/media/images/answers-background.png
Binary files differ
diff --git a/askbot/skins/default/media/images/background-user-info.png b/askbot/skins/default/media/images/background-user-info.png
new file mode 100644
index 00000000..b681cb37
--- /dev/null
+++ b/askbot/skins/default/media/images/background-user-info.png
Binary files differ
diff --git a/askbot/skins/default/media/images/bigbutton.png b/askbot/skins/default/media/images/bigbutton.png
new file mode 100644
index 00000000..2a7c0f05
--- /dev/null
+++ b/askbot/skins/default/media/images/bigbutton.png
Binary files differ
diff --git a/askbot/skins/default/media/images/bigbuttonhover.png b/askbot/skins/default/media/images/bigbuttonhover.png
new file mode 100644
index 00000000..cf4bacca
--- /dev/null
+++ b/askbot/skins/default/media/images/bigbuttonhover.png
Binary files differ
diff --git a/askbot/skins/default/media/images/close-small-dark.png b/askbot/skins/default/media/images/close-small-dark.png
index 280c1fc7..72ada35b 100755..100644
--- a/askbot/skins/default/media/images/close-small-dark.png
+++ b/askbot/skins/default/media/images/close-small-dark.png
Binary files differ
diff --git a/askbot/skins/default/media/images/close.png b/askbot/skins/default/media/images/close.png
new file mode 100644
index 00000000..cfe209ff
--- /dev/null
+++ b/askbot/skins/default/media/images/close.png
Binary files differ
diff --git a/askbot/skins/default/media/images/comment-background.png b/askbot/skins/default/media/images/comment-background.png
new file mode 100644
index 00000000..4299b847
--- /dev/null
+++ b/askbot/skins/default/media/images/comment-background.png
Binary files differ
diff --git a/askbot/skins/default/media/images/comment.png b/askbot/skins/default/media/images/comment.png
new file mode 100644
index 00000000..9dcc4c66
--- /dev/null
+++ b/askbot/skins/default/media/images/comment.png
Binary files differ
diff --git a/askbot/skins/default/media/images/contributorsback.png b/askbot/skins/default/media/images/contributorsback.png
new file mode 100644
index 00000000..dd728383
--- /dev/null
+++ b/askbot/skins/default/media/images/contributorsback.png
Binary files differ
diff --git a/askbot/skins/default/media/images/delete.png b/askbot/skins/default/media/images/delete.png
new file mode 100644
index 00000000..9263eae3
--- /dev/null
+++ b/askbot/skins/default/media/images/delete.png
Binary files differ
diff --git a/askbot/skins/default/media/images/edit2.png b/askbot/skins/default/media/images/edit2.png
new file mode 100644
index 00000000..f142a68c
--- /dev/null
+++ b/askbot/skins/default/media/images/edit2.png
Binary files differ
diff --git a/askbot/skins/default/media/images/feed-icon-small.png b/askbot/skins/default/media/images/feed-icon-small.png
index b3c949d2..2794b0f5 100755..100644
--- a/askbot/skins/default/media/images/feed-icon-small.png
+++ b/askbot/skins/default/media/images/feed-icon-small.png
Binary files differ
diff --git a/askbot/skins/default/media/images/flag.png b/askbot/skins/default/media/images/flag.png
new file mode 100644
index 00000000..fc302335
--- /dev/null
+++ b/askbot/skins/default/media/images/flag.png
Binary files differ
diff --git a/askbot/skins/default/media/images/link.png b/askbot/skins/default/media/images/link.png
new file mode 100644
index 00000000..6ad60f5e
--- /dev/null
+++ b/askbot/skins/default/media/images/link.png
Binary files differ
diff --git a/askbot/skins/default/media/images/logo.gif b/askbot/skins/default/media/images/logo.gif
index 03eb79f4..810b0bcf 100644
--- a/askbot/skins/default/media/images/logo.gif
+++ b/askbot/skins/default/media/images/logo.gif
Binary files differ
diff --git a/askbot/skins/default/media/images/medium-button.png b/askbot/skins/default/media/images/medium-button.png
new file mode 100644
index 00000000..f384be91
--- /dev/null
+++ b/askbot/skins/default/media/images/medium-button.png
Binary files differ
diff --git a/askbot/skins/default/media/images/notification.png b/askbot/skins/default/media/images/notification.png
new file mode 100644
index 00000000..c33ba699
--- /dev/null
+++ b/askbot/skins/default/media/images/notification.png
Binary files differ
diff --git a/askbot/skins/default/media/images/retag.png b/askbot/skins/default/media/images/retag.png
new file mode 100644
index 00000000..836c043c
--- /dev/null
+++ b/askbot/skins/default/media/images/retag.png
Binary files differ
diff --git a/askbot/skins/default/media/images/scopearrow.png b/askbot/skins/default/media/images/scopearrow.png
new file mode 100644
index 00000000..73dc6744
--- /dev/null
+++ b/askbot/skins/default/media/images/scopearrow.png
Binary files differ
diff --git a/askbot/skins/default/media/images/small-button-blue.png b/askbot/skins/default/media/images/small-button-blue.png
new file mode 100644
index 00000000..54082818
--- /dev/null
+++ b/askbot/skins/default/media/images/small-button-blue.png
Binary files differ
diff --git a/askbot/skins/default/media/images/small-button-cancel.png b/askbot/skins/default/media/images/small-button-cancel.png
new file mode 100644
index 00000000..79a87497
--- /dev/null
+++ b/askbot/skins/default/media/images/small-button-cancel.png
Binary files differ
diff --git a/askbot/skins/default/media/images/socialsprite.png b/askbot/skins/default/media/images/socialsprite.png
new file mode 100644
index 00000000..8d01ed77
--- /dev/null
+++ b/askbot/skins/default/media/images/socialsprite.png
Binary files differ
diff --git a/askbot/skins/default/media/images/sprites.png b/askbot/skins/default/media/images/sprites.png
new file mode 100644
index 00000000..dcc1bdc3
--- /dev/null
+++ b/askbot/skins/default/media/images/sprites.png
Binary files differ
diff --git a/askbot/skins/default/media/images/sprites_source/sprites.svg b/askbot/skins/default/media/images/sprites_source/sprites.svg
new file mode 100644
index 00000000..34898e30
--- /dev/null
+++ b/askbot/skins/default/media/images/sprites_source/sprites.svg
@@ -0,0 +1,732 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg5653"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="sprites.svg">
+ <defs
+ id="defs5655">
+ <linearGradient
+ id="linearGradient3865"
+ inkscape:collect="always">
+ <stop
+ id="stop3867"
+ offset="0"
+ style="stop-color:#0975cf;stop-opacity:1" />
+ <stop
+ id="stop3869"
+ offset="1"
+ style="stop-color:#14b3de;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3824"
+ inkscape:collect="always">
+ <stop
+ id="stop3826"
+ offset="0"
+ style="stop-color:#9f9f8d;stop-opacity:1" />
+ <stop
+ id="stop3828"
+ offset="1"
+ style="stop-color:#44443a;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3812"
+ inkscape:collect="always">
+ <stop
+ id="stop3814"
+ offset="0"
+ style="stop-color:#9f9f8d;stop-opacity:1" />
+ <stop
+ id="stop3816"
+ offset="1"
+ style="stop-color:#44443a;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7944"
+ id="linearGradient7950"
+ x1="-1656.4215"
+ y1="3870.6523"
+ x2="-1656.4216"
+ y2="3887.7998"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7944">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7946" />
+ <stop
+ style="stop-color:#e4e4e4;stop-opacity:1"
+ offset="1"
+ id="stop7948" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7944"
+ id="linearGradient6226"
+ gradientUnits="userSpaceOnUse"
+ x1="-1656.4215"
+ y1="3870.6523"
+ x2="-1656.4216"
+ y2="3887.7998" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7944"
+ id="linearGradient6228"
+ gradientUnits="userSpaceOnUse"
+ x1="-1656.4215"
+ y1="3870.6523"
+ x2="-1656.4216"
+ y2="3887.7998" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5675"
+ id="radialGradient5683"
+ cx="-2600.8416"
+ cy="2819.7468"
+ fx="-2600.8416"
+ fy="2819.7468"
+ r="16.18819"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,945.88619,2917.0459)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5675">
+ <stop
+ style="stop-color:#9f9f8d;stop-opacity:1"
+ offset="0"
+ id="stop5677" />
+ <stop
+ style="stop-color:#757563;stop-opacity:1"
+ offset="1"
+ id="stop5679" />
+ </linearGradient>
+ <radialGradient
+ r="16.18819"
+ fy="2819.7468"
+ fx="-2600.8416"
+ cy="2819.7468"
+ cx="-2600.8416"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,3626.1545,288.43467)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5712"
+ xlink:href="#linearGradient5675"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3812"
+ id="radialGradient3804"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,3488.6545,301.93467)"
+ cx="-2600.8416"
+ cy="2819.7468"
+ fx="-2600.8416"
+ fy="2819.7468"
+ r="16.18819" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="radialGradient3822"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.58002994,0.69397701,-0.72276743,0.59013931,3671.135,288.43467)"
+ cx="-2600.8416"
+ cy="2819.7468"
+ fx="-2600.8416"
+ fy="2819.7468"
+ r="16.18819" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3815"
+ id="radialGradient3821"
+ cx="222.6344"
+ cy="161.02299"
+ fx="222.6344"
+ fy="161.02299"
+ r="11.136931"
+ gradientTransform="matrix(1.0362639,-1.062432,1.063838,1.0176009,-176.68455,228.7811)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3815">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3817" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop3819" />
+ </linearGradient>
+ <radialGradient
+ r="11.136931"
+ fy="161.02299"
+ fx="222.6344"
+ cy="161.02299"
+ cx="222.6344"
+ gradientTransform="matrix(0.25937215,-1.0764281,1.4011863,0.30094439,-58.042568,347.29527)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3838"
+ xlink:href="#linearGradient3865"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath5733">
+ <rect
+ style="opacity:0.42723006;fill:#436871;fill-opacity:1;stroke:none"
+ id="rect5735"
+ width="5.5"
+ height="60.5"
+ x="-1266"
+ y="3940.3623"
+ ry="0" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5704"
+ id="linearGradient5765"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,6.3333332,234,-21267.853)"
+ x1="-1477"
+ y1="3997.8623"
+ x2="-1477"
+ y2="3976.8623" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5704">
+ <stop
+ style="stop-color:#436871;stop-opacity:1"
+ offset="0"
+ id="stop5706" />
+ <stop
+ style="stop-color:#c9dbdf;stop-opacity:0;"
+ offset="1"
+ id="stop5708" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath5776">
+ <rect
+ style="opacity:0.42723006;fill:#436871;fill-opacity:1;stroke:none"
+ id="rect5778"
+ width="5.75"
+ height="56.625"
+ x="-1260.375"
+ y="3997.4873"
+ ry="0" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5704"
+ id="linearGradient5710"
+ x1="-1477"
+ y1="3997.8623"
+ x2="-1477"
+ y2="3976.8623"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,6.3333332,1795.4506,-24803.226)" />
+ <filter
+ color-interpolation-filters="sRGB"
+ inkscape:collect="always"
+ id="filter4997-0">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.65508698"
+ id="feGaussianBlur4999-3" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4142136"
+ inkscape:cx="250.462"
+ inkscape:cy="491.05925"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1316"
+ inkscape:window-height="744"
+ inkscape:window-x="50"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <sodipodi:guide
+ orientation="0,1"
+ position="1,1061.5"
+ id="guide6194" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="62.5,992"
+ id="guide3030" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5658">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Capa 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#35575a;fill-opacity:1;stroke:none"
+ id="rect5684"
+ width="743"
+ height="355"
+ x="1"
+ y="5.3621826" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect5682"
+ width="600"
+ height="207"
+ x="58"
+ y="83.362183"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/sprites.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="87.862183"
+ x="107"
+ height="28"
+ width="243.25"
+ id="rect6341"
+ style="fill:#16160f;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#f5dd69;fill-opacity:1;stroke:none"
+ id="rect6196"
+ width="41.25"
+ height="21"
+ x="63"
+ y="87.862183" />
+ <path
+ transform="matrix(1.0191083,0,0,0.98765432,1762.2659,-3727.1824)"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:cx="-1656.5"
+ id="path7928"
+ style="fill:#c9a90d;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient7950);fill-opacity:1;stroke:none"
+ id="path7922"
+ sodipodi:cx="-1656.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ transform="matrix(1.0191083,0,0,0.98765432,1761.629,-3728.4169)" />
+ <text
+ transform="scale(1.1035306,0.90618241)"
+ xml:space="preserve"
+ style="font-size:19.10287285px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#b96161;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ x="62.464367"
+ y="112.6709"
+ id="text7924"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7926"
+ x="62.464367"
+ y="112.6709"
+ style="font-size:14.30124187px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#b96161;fill-opacity:1;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS">X</tspan></text>
+ <path
+ sodipodi:type="arc"
+ style="fill:#c9a90d;fill-opacity:1;stroke:none"
+ id="path6208"
+ sodipodi:cx="-1656.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ transform="matrix(1.0191083,0,0,0.98765432,1762.2659,-3727.1824)" />
+ <path
+ transform="matrix(1.0191083,0,0,0.98765432,1761.629,-3728.4169)"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:cx="-1656.5"
+ id="path6210"
+ style="fill:url(#linearGradient6228);fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text6212"
+ y="112.6709"
+ x="62.464367"
+ style="font-size:19.10287285px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#b96161;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ xml:space="preserve"
+ transform="scale(1.1035306,0.90618241)"><tspan
+ style="font-size:14.30124187px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#b96161;fill-opacity:1;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
+ y="112.6709"
+ x="62.464367"
+ id="tspan6214"
+ sodipodi:role="line">X</tspan></text>
+ <path
+ transform="matrix(1.0191083,0,0,0.98765432,1782.2659,-3727.1824)"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:cx="-1656.5"
+ id="path6218"
+ style="fill:#c9a90d;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient6226);fill-opacity:1;stroke:none"
+ id="path6220"
+ sodipodi:cx="-1656.5"
+ sodipodi:cy="3873.8623"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -1647,3873.8623 a 9.5,9.5 0 1 1 -19,0 9.5,9.5 0 1 1 19,0 z"
+ transform="matrix(1.0191083,0,0,0.98765432,1781.629,-3728.4169)" />
+ <text
+ transform="scale(1.1035306,0.9061824)"
+ xml:space="preserve"
+ style="font-size:19.10287285px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#e90f0f;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ x="80.587997"
+ y="112.6709"
+ id="text6222"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan6224"
+ x="80.587997"
+ y="112.6709"
+ style="font-size:14.30124187px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#e90f0f;fill-opacity:1;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS">X</tspan></text>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/oxfam/arte/disenoindex.png"
+ id="path5443"
+ d="m 118.12608,94.030535 c -1.0424,-0.859469 -2.66478,-0.610365 -3.61221,0.548988 -0.95263,1.157954 -0.86987,2.798821 0.17873,3.655691 1.0444,0.861168 2.66667,0.612064 3.61631,-0.549588 0.94503,-1.162052 0.86746,-2.798222 -0.17854,-3.655591 z m 5.88263,18.686595 -12.99549,-10.6378 c -0.44703,-0.36346 -0.64755,-0.93014 -0.58638,-1.50242 -0.05,-0.11386 -0.087,-0.2505 -0.10985,-0.41064 l -1.33739,-8.835794 c -0.14424,-0.949634 0.5206,-1.76262 1.48163,-1.808503 l 8.91926,-0.441729 c 0.38495,-0.01899 1.49952,0.354863 1.78501,0.584574 l 12.99449,10.637502 c 0.74232,0.60366 0.7989,1.77001 0.12665,2.5924 l -7.71322,9.43426 c -0.66824,0.82178 -1.8207,0.99492 -2.56061,0.38925 z"
+ clip-rule="evenodd"
+ style="fill:#e7e8a8;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#16160f;fill-opacity:1;fill-rule:evenodd"
+ clip-rule="evenodd"
+ d="m 118.54252,95.166497 c -0.92055,-0.758108 -2.28652,-0.618962 -3.04183,0.304482 -0.75951,0.922345 -0.62036,2.289418 0.30498,3.045526 0.92224,0.759507 2.28822,0.620461 3.04513,-0.305082 0.75321,-0.925943 0.61866,-2.289018 -0.30479,-3.045326 z m 5.77547,15.775213 -11.47288,-9.38528 c -0.39445,-0.32067 -0.58837,-0.79999 -0.56038,-1.27301 -0.047,-0.097 -0.084,-0.21191 -0.11056,-0.345863 l -1.50572,-7.398547 c -0.16224,-0.795193 0.36786,-1.442844 1.18105,-1.440845 l 7.54948,0.01 c 0.32578,3.99e-4 1.28701,0.357962 1.53911,0.560484 l 11.47158,9.385081 c 0.65525,0.53279 0.75211,1.50442 0.21612,2.15966 l -6.14833,7.51601 c -0.5325,0.65474 -1.50312,0.75031 -2.15627,0.21591 z"
+ id="path5445"
+ inkscape:export-filename="/home/bcorrales/personal/oxfam/arte/disenoindex.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:transform-center-x="0.5180824"
+ inkscape:transform-center-y="-0.28622416" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5457"
+ d="m 201.60421,88.7079 c -5.0386,0.159728 -7.45306,6.825068 -4.44845,10.23363 -5.35784,2.62945 -3.73419,8.6476 -3.90826,13.70496 6.23105,0 12.46221,0 18.69326,0 -0.0342,-5.17704 1.38659,-11.61812 -4.44823,-13.962091 3.5491,-4.275375 -0.52838,-10.736311 -5.88832,-9.976499 z"
+ style="fill:#e7e8a8;fill-opacity:1;stroke:none" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#16160f;fill-opacity:1;stroke:none"
+ id="path5461"
+ sodipodi:cx="-1766"
+ sodipodi:cy="1210.3622"
+ sodipodi:rx="20.875"
+ sodipodi:ry="19.875"
+ d="m -1746.6683,1217.8622 a 20.875,19.875 0 1 1 0.021,-0.05"
+ sodipodi:start="0.38694167"
+ sodipodi:end="6.6674319"
+ sodipodi:open="true"
+ transform="matrix(0.23246322,0,0,0.23246322,612.84081,-186.42964)" />
+ <path
+ style="fill:#16160f;fill-opacity:1;stroke:none"
+ d="m 200.32341,99.85026 c -2.77296,0 -5.03938,2.03973 -5.40307,4.70966 l -0.021,0 0,0.11384 c -0.0243,0.20805 -0.0408,0.42712 -0.0408,0.64178 0,0.21102 0.0177,0.41631 0.0408,0.62105 l 0,5.0718 15.40196,0 0,-5.0718 c 0.0232,-0.20474 0.0408,-0.41003 0.0408,-0.62105 0,-0.21466 -0.0177,-0.43373 -0.0408,-0.64178 l 0,-0.11384 -0.021,0 c -0.3638,-2.66993 -2.63021,-4.70966 -5.40306,-4.70966 l -1.03504,0 -1.35592,2.81554 -1.36629,-2.81554 -0.79699,0 z"
+ id="path5463"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:0.95734594;fill:#e7e8a8;fill-opacity:1;stroke:none"
+ d="m 287.95443,89.851557 c -1.6542,0.05548 -2.75231,2.086378 -1.97699,3.52883 -0.63135,1.023863 -1.18707,3.287681 -2.84533,2.512825 -1.58254,0.673792 -2.41713,-1.603711 -3.98172,-0.91457 -2.15656,0.508372 -2.50044,3.955277 -0.28646,4.609836 0.66658,0.118355 1.38854,0.192142 1.38577,1.016282 1.32012,1.04282 0.20536,3.35241 -1.27491,3.51052 -2.03524,0.99474 -1.52604,4.44608 0.79456,4.64673 1.48119,0.14147 2.53871,-1.5326 4.09258,-0.89608 1.17551,0.24938 1.76747,1.60242 2.05078,2.54048 -1.0087,1.8897 1.18605,4.16804 3.10405,3.20566 1.39067,-0.4601 1.85188,-2.07121 1.37652,-3.31653 0.41369,-0.83912 1.05271,-1.65965 1.6075,-2.34648 1.24643,-0.35941 2.55425,-0.14896 3.50119,0.71142 2.08378,0.88286 4.38154,-1.75378 2.95628,-3.63072 -0.53953,-1.15942 -2.19299,-0.66667 -2.50358,-1.94916 -0.82635,-1.06372 -0.34544,-2.40575 0.47111,-3.251898 0.51485,-0.512163 1.80066,-0.202313 2.15249,-1.136301 1.70737,-1.912451 -1.15266,-5.077339 -3.21491,-3.547415 -0.69552,1.09312 -1.98439,0.810455 -3.03932,0.840598 -0.98808,-0.566532 -1.66816,-1.890814 -1.84763,-2.900808 0.49774,-1.685634 -0.70875,-3.40169 -2.52198,-3.233219 z"
+ id="path5491"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path5404"
+ d="m 288.16682,91.024751 c -0.69043,0 -1.25641,0.565885 -1.25641,1.256321 0,0.415167 0.20601,0.779571 0.51734,1.006942 l -2.22628,3.815471 -4.22185,-0.0092 c 0,0 0,-0.0092 0,-0.0092 -0.11993,-0.565515 -0.62747,-0.988542 -1.22877,-0.988542 -0.69034,0 -1.24707,0.556638 -1.24707,1.247166 0,0.690435 0.55673,1.247074 1.24707,1.247074 0.21813,0 0.4221,-0.05825 0.60056,-0.156913 l 2.01389,3.51967 -1.85688,3.19642 c -0.13232,-0.0472 -0.27629,-0.0841 -0.42497,-0.0841 -0.69044,0 -1.24717,0.55673 -1.24717,1.24726 0,0.69052 0.55673,1.25641 1.24717,1.25641 0.54915,0 1.01452,-0.35784 1.18244,-0.84994 l 3.88926,-0.0185 2.19872,3.72291 c -0.28692,0.22904 -0.48036,0.57421 -0.48036,0.96996 0,0.69053 0.55664,1.24726 1.24717,1.24726 0.69044,0 1.25641,-0.55673 1.25641,-1.24726 0,-0.37153 -0.16764,-0.70403 -0.42497,-0.93297 l 2.24487,-3.7599 4.02786,-0.009 c 0.13796,0.54037 0.62682,0.94231 1.21018,0.94231 0.69053,0 1.24717,-0.55673 1.24717,-1.24716 0,-0.69053 -0.55664,-1.25642 -1.24717,-1.25642 -0.18003,0 -0.3534,0.0425 -0.5081,0.11087 l -1.95849,-3.4089 2.05087,-3.538262 c 0.18262,0.104485 0.38447,0.166344 0.60971,0.166344 0.69053,0 1.25641,-0.556638 1.25641,-1.247073 0,-0.690621 -0.56588,-1.247259 -1.25641,-1.247259 -0.63921,0 -1.15415,0.480262 -1.22867,1.099407 l -4.13864,0.01849 -2.32808,-3.833871 c 0.28794,-0.229035 0.48045,-0.573467 0.48045,-0.969956 0,-0.690528 -0.55673,-1.256413 -1.24726,-1.256413 z"
+ style="opacity:0.95734594;fill:#16160f;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.05048908,0,0,0.04995915,432.79113,-34.802929)"
+ d="m -2780.5,2735.8623 a 83.5,82.5 0 1 1 -167,0 83.5,82.5 0 1 1 167,0 z"
+ sodipodi:ry="82.5"
+ sodipodi:rx="83.5"
+ sodipodi:cy="2735.8623"
+ sodipodi:cx="-2864"
+ id="path5754"
+ style="opacity:0.95734594;fill:#e7e8a8;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <rect
+ style="fill:#e9e9e1;fill-opacity:1;stroke:none"
+ id="rect3032"
+ width="45"
+ height="55"
+ x="62.5"
+ y="119.61218" />
+ <path
+ style="fill:url(#radialGradient5712);fill-opacity:1"
+ d="m 67.6121,160.27637 c -0.094,-0.046 -0.2146,-0.1465 -0.2675,-0.2235 -0.092,-0.1328 -0.097,-0.507 -0.1104,-7.2852 l -0.014,-7.1451 5.5933,-4.8985 c 3.0763,-2.6941 5.6262,-4.9108 5.6664,-4.9262 0.044,-0.017 2.2915,1.9154 5.6947,4.8961 l 5.6214,4.9239 -0.014,7.1474 c -0.013,6.7953 -0.019,7.1546 -0.1108,7.2883 -0.2172,0.3162 -0.1184,0.3086 -4.0168,0.3086 l -3.5623,0 -6e-4,-3.0266 c -6e-4,-1.6648 -0.016,-3.1187 -0.035,-3.2313 -0.022,-0.1319 -0.098,-0.2677 -0.2151,-0.3832 l -0.1811,-0.1789 -3.1523,0 -3.1523,0 -0.181,0.1789 c -0.1168,0.1155 -0.1931,0.2513 -0.2152,0.3832 -0.019,0.1126 -0.034,1.5665 -0.035,3.2313 l -5e-4,3.0266 -3.5704,0 c -3.1432,0 -3.591,-0.012 -3.7418,-0.085 z m -4.3178,-15.0177 c -0.4595,-0.5139 -0.817,-0.9502 -0.7943,-0.9695 0.023,-0.019 3.6131,-3.1609 7.9784,-6.9811 4.3654,-3.82019 7.9797,-6.94589 8.0317,-6.94589 0.052,0 3.6512,3.11599 7.9984,6.92429 4.3473,3.8085 7.9377,6.949 7.9789,6.9791 0.059,0.043 -0.096,0.24591 -0.764,0.9929 -0.7293,0.8159 -0.8498,0.9293 -0.9245,0.8704 -0.047,-0.038 -3.2709,-2.8571 -7.1641,-6.26639 -3.8931,-3.40961 -7.0985,-6.1989 -7.1231,-6.1989 -0.025,0 -3.2475,2.8051 -7.1619,6.23339 -3.9144,3.4285 -7.1401,6.2475 -7.1685,6.2648 -0.028,0.018 -0.4273,-0.3892 -0.887,-0.9031 z m 3.9274,-9.9518 0,-2.96499 2.0326,0 2.0326,0 0,0.9707 c 0,1.5539 0.2495,1.16 -2.0161,3.1826 -1.0729,0.95779 -1.9729,1.74949 -1.9999,1.75909 -0.03,0.011 -0.048,-1.1677 -0.048,-2.9474 z"
+ id="path5673"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3802"
+ d="m -69.8879,173.77637 c -0.094,-0.046 -0.2146,-0.1465 -0.2675,-0.2235 -0.092,-0.1328 -0.097,-0.507 -0.1104,-7.2852 l -0.014,-7.1451 5.5933,-4.8985 c 3.0763,-2.6941 5.6262,-4.9108 5.6664,-4.9262 0.044,-0.017 2.2915,1.9154 5.6947,4.8961 l 5.6214,4.9239 -0.014,7.1474 c -0.013,6.7953 -0.019,7.1546 -0.1108,7.2883 -0.2172,0.3162 -0.1184,0.3086 -4.0168,0.3086 l -3.5623,0 -6e-4,-3.0266 c -6e-4,-1.6648 -0.016,-3.1187 -0.035,-3.2313 -0.022,-0.1319 -0.098,-0.2677 -0.2151,-0.3832 l -0.1811,-0.1789 -3.1523,0 -3.1523,0 -0.181,0.1789 c -0.1168,0.1155 -0.1931,0.2513 -0.2152,0.3832 -0.019,0.1126 -0.034,1.5665 -0.035,3.2313 l -5e-4,3.0266 -3.5704,0 c -3.1432,0 -3.591,-0.012 -3.7418,-0.085 z m -4.3178,-15.0177 c -0.4595,-0.5139 -0.817,-0.9502 -0.7943,-0.9695 0.023,-0.019 3.6131,-3.1609 7.9784,-6.9811 4.3654,-3.82019 7.9797,-6.94589 8.0317,-6.94589 0.052,0 3.6512,3.11599 7.9984,6.92429 4.3473,3.8085 7.9377,6.949 7.9789,6.9791 0.059,0.043 -0.096,0.24591 -0.764,0.9929 -0.7293,0.8159 -0.8498,0.9293 -0.9245,0.8704 -0.047,-0.038 -3.2709,-2.8571 -7.1641,-6.26639 -3.8931,-3.40961 -7.0985,-6.1989 -7.1231,-6.1989 -0.025,0 -3.2475,2.8051 -7.1619,6.23339 -3.9144,3.4285 -7.1401,6.2475 -7.1685,6.2648 -0.028,0.018 -0.4273,-0.3892 -0.887,-0.9031 z m 3.9274,-9.9518 0,-2.96499 2.0326,0 2.0326,0 0,0.9707 c 0,1.5539 0.2495,1.16 -2.0161,3.1826 -1.0729,0.95779 -1.9729,1.74949 -1.9999,1.75909 -0.03,0.011 -0.048,-1.1677 -0.048,-2.9474 z"
+ style="fill:url(#radialGradient3804);fill-opacity:1" />
+ <rect
+ y="119.61218"
+ x="107.48047"
+ height="55"
+ width="45"
+ id="rect3818"
+ style="fill:#e9e9e1;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3820"
+ d="m 112.59257,160.27637 c -0.094,-0.046 -0.2146,-0.1465 -0.2675,-0.2235 -0.092,-0.1328 -0.097,-0.507 -0.1104,-7.2852 l -0.014,-7.1451 5.5933,-4.8985 c 3.0763,-2.6941 5.6262,-4.9108 5.6664,-4.9262 0.044,-0.017 2.2915,1.9154 5.6947,4.8961 l 5.6214,4.9239 -0.014,7.1474 c -0.013,6.7953 -0.019,7.1546 -0.1108,7.2883 -0.2172,0.3162 -0.1184,0.3086 -4.0168,0.3086 l -3.5623,0 -6e-4,-3.0266 c -6e-4,-1.6648 -0.016,-3.1187 -0.035,-3.2313 -0.022,-0.1319 -0.098,-0.2677 -0.2151,-0.3832 l -0.1811,-0.1789 -3.1523,0 -3.1523,0 -0.181,0.1789 c -0.1168,0.1155 -0.1931,0.2513 -0.2152,0.3832 -0.019,0.1126 -0.034,1.5665 -0.035,3.2313 l -5e-4,3.0266 -3.5704,0 c -3.1432,0 -3.591,-0.012 -3.7418,-0.085 z m -4.3178,-15.0177 c -0.4595,-0.5139 -0.817,-0.9502 -0.7943,-0.9695 0.023,-0.019 3.6131,-3.1609 7.9784,-6.9811 4.3654,-3.82019 7.9797,-6.94589 8.0317,-6.94589 0.052,0 3.6512,3.11599 7.9984,6.92429 4.3473,3.8085 7.9377,6.949 7.9789,6.9791 0.059,0.043 -0.096,0.24591 -0.764,0.9929 -0.7293,0.8159 -0.8498,0.9293 -0.9245,0.8704 -0.047,-0.038 -3.2709,-2.8571 -7.1641,-6.26639 -3.8931,-3.40961 -7.0985,-6.1989 -7.1231,-6.1989 -0.025,0 -3.2475,2.8051 -7.1619,6.23339 -3.9144,3.4285 -7.1401,6.2475 -7.1685,6.2648 -0.028,0.018 -0.4273,-0.3892 -0.887,-0.9031 z m 3.9274,-9.9518 0,-2.96499 2.0326,0 2.0326,0 0,0.9707 c 0,1.5539 0.2495,1.16 -2.0161,3.1826 -1.0729,0.95779 -1.9729,1.74949 -1.9999,1.75909 -0.03,0.011 -0.048,-1.1677 -0.048,-2.9474 z"
+ style="fill:url(#radialGradient3822);fill-opacity:1" />
+ <rect
+ style="opacity:0.79620852;fill:#deded0;fill-opacity:1;stroke:none"
+ id="rect4547"
+ width="48"
+ height="40"
+ x="155.08926"
+ y="120.0357" />
+ <image
+ width="35.911209"
+ height="35.911209"
+ xlink:href="data:image/png;base64,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 "
+ id="image4549"
+ x="162.0482"
+ y="122.71503" />
+ <rect
+ y="120.0357"
+ x="203.07843"
+ height="40"
+ width="48"
+ id="rect3861"
+ style="opacity:0.79620852;fill:#deded0;fill-opacity:1;stroke:none" />
+ <image
+ y="122.71503"
+ x="210.03737"
+ id="image3863"
+ xlink:href="data:image/png;base64,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 "
+ height="35.911209"
+ width="35.911209" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient3838);fill-opacity:1;stroke:none"
+ id="path3813"
+ sodipodi:cx="223.62251"
+ sodipodi:cy="147.08873"
+ sodipodi:rx="11.136931"
+ sodipodi:ry="9.0156116"
+ d="m 234.75944,147.08873 a 11.136931,9.0156116 0 1 1 -22.27386,0 11.136931,9.0156116 0 1 1 22.27386,0 z"
+ transform="matrix(1.2054549,0,0,1.1341085,-41.21305,-21.172626)" />
+ <rect
+ ry="4.1932693"
+ y="467.85327"
+ x="215.2729"
+ height="43.25"
+ width="200.58887"
+ id="rect4912"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4914"
+ d="m 219.19773,467.616 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="matrix(0.91683189,0,0,1,2564.1856,-830.04452)"
+ style="fill:#555753;fill-opacity:0.68306011;stroke:none;filter:url(#filter4997-0)"
+ id="rect4917"
+ width="218.78479"
+ height="43.25"
+ x="-2560"
+ y="1248.6122"
+ ry="4.1932693"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ ry="4.1932693"
+ y="417.31763"
+ x="216.40852"
+ height="43.25"
+ width="200.58887"
+ id="rect4919"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4921"
+ d="m 220.33333,417.0805 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ style="fill:url(#linearGradient5710);fill-opacity:1;stroke:none"
+ id="rect5702"
+ width="200.58887"
+ height="42.75"
+ x="216.40852"
+ y="417.31763"
+ ry="4.1447921" />
+ <text
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ xml:space="preserve"
+ style="font-size:18.32528687px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#c6d9dd;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ x="258.99481"
+ y="445.8772"
+ id="text5782"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5784"
+ x="258.99481"
+ y="445.8772"
+ style="font-size:23px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c6d9dd;fill-opacity:1;font-family:Yanone Kaffeesatz;-inkscape-font-specification:Yanone Kaffeesatz">ASK A QUESTION</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4923"
+ y="444.99341"
+ x="258.99481"
+ style="font-size:18.32528687px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#314e55;fill-opacity:1;stroke:none;font-family:Arial Rounded MT Bold;-inkscape-font-specification:Arial Rounded MT Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ style="font-size:23px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#314e55;fill-opacity:1;font-family:Yanone Kaffeesatz;-inkscape-font-specification:Yanone Kaffeesatz"
+ y="444.99341"
+ x="258.99481"
+ id="tspan4926"
+ sodipodi:role="line">ASK A QUESTION</tspan></text>
+ <g
+ id="g5771"
+ clip-path="url(#clipPath5776)"
+ transform="matrix(0.95652174,0,0,0.9658003,1661.0255,-3400.1079)"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/bigbutton.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ ry="4.1932693"
+ y="4000.7271"
+ x="-1346.1777"
+ height="43.25"
+ width="200.58887"
+ id="rect5712"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5714"
+ d="m -1342.2529,4000.4898 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <g
+ id="g5728"
+ clip-path="url(#clipPath5733)"
+ transform="matrix(1,0,0,0.96580351,1721.4506,-3395.7266)"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/bigbutton.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ ry="4.1932693"
+ y="3952.6914"
+ x="-1345.0421"
+ height="43.25"
+ width="200.58887"
+ id="rect5718"
+ style="fill:#c9dbdf;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5720"
+ d="m -1341.1173,3952.4543 c -2.3021,0 -4.1543,2.0202 -4.1543,4.5312 l 0,17.9688 200.5856,0 0,-17.9688 c 0,-2.511 -1.8521,-4.5312 -4.1543,-4.5312 l -192.277,0 z"
+ style="fill:#d6e5e8;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ style="fill:url(#linearGradient5765);fill-opacity:1;stroke:none"
+ id="rect5722"
+ width="200.58887"
+ height="42.75"
+ x="-1345.0421"
+ y="3952.6914"
+ ry="4.1447921" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/templates/question_page_20_oct.png"
+ style="fill:#eceeeb;fill-opacity:1;stroke:none"
+ id="rect8138"
+ width="200"
+ height="34"
+ x="208.43501"
+ y="563.99463" />
+ <path
+ style="fill:#cfcdcb;fill-opacity:1;stroke:none"
+ d="m 237.10314,570.64836 c -4.1222,0 -7.6717,2.6492 -9.375,6.5 -0.6289,-0.2342 -1.2957,-0.375 -2,-0.375 -1.9564,0 -3.7033,0.9745 -4.8125,2.5 l -11.8437,0.125 0,7.3125 11.5312,-0.094 c 1.0734,1.8106 2.9601,3.0313 5.125,3.0313 1.022,0 1.9677,-0.2764 2.8125,-0.75 1.8902,3.0125 5.0068,4.9687 8.5625,4.9687 3.7337,0 7.0246,-2.1669 8.875,-5.4374 l -4.8125,0 c -1.0612,0.806 -2.5249,0.8124 -3.9063,0.8124 -3.6563,0 -4.8124,-2.9663 -4.8124,-7.0312 0,-4.0647 1.4686,-6.625 5.125,-6.625 1.7505,0 3.2224,0.1762 4.4062,1.4062 l 4.4688,0 c -1.7287,-3.7705 -5.2744,-6.3437 -9.3438,-6.3437 z"
+ id="rect5882"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/bcorrales/personal/askbot/contributorsback.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+</svg>
diff --git a/askbot/skins/default/media/images/summary-background.png b/askbot/skins/default/media/images/summary-background.png
new file mode 100644
index 00000000..28a6a398
--- /dev/null
+++ b/askbot/skins/default/media/images/summary-background.png
Binary files differ
diff --git a/askbot/skins/default/media/images/tag-left.png b/askbot/skins/default/media/images/tag-left.png
index 5a9d8a0d..23369d98 100644
--- a/askbot/skins/default/media/images/tag-left.png
+++ b/askbot/skins/default/media/images/tag-left.png
Binary files differ
diff --git a/askbot/skins/default/media/images/tag-right.png b/askbot/skins/default/media/images/tag-right.png
index 871664c3..05a62aba 100644
--- a/askbot/skins/default/media/images/tag-right.png
+++ b/askbot/skins/default/media/images/tag-right.png
Binary files differ
diff --git a/askbot/skins/default/media/images/tips.png b/askbot/skins/default/media/images/tips.png
new file mode 100644
index 00000000..7e8aafdf
--- /dev/null
+++ b/askbot/skins/default/media/images/tips.png
Binary files differ
diff --git a/askbot/skins/default/media/images/view-background.png b/askbot/skins/default/media/images/view-background.png
new file mode 100644
index 00000000..5e951f40
--- /dev/null
+++ b/askbot/skins/default/media/images/view-background.png
Binary files differ
diff --git a/askbot/skins/default/media/images/vote-arrow-down-new.png b/askbot/skins/default/media/images/vote-arrow-down-new.png
new file mode 100644
index 00000000..f2a28aea
--- /dev/null
+++ b/askbot/skins/default/media/images/vote-arrow-down-new.png
Binary files differ
diff --git a/askbot/skins/default/media/images/vote-arrow-down-on-new.png b/askbot/skins/default/media/images/vote-arrow-down-on-new.png
new file mode 100644
index 00000000..2127bf7d
--- /dev/null
+++ b/askbot/skins/default/media/images/vote-arrow-down-on-new.png
Binary files differ
diff --git a/askbot/skins/default/media/images/vote-arrow-up-new.png b/askbot/skins/default/media/images/vote-arrow-up-new.png
new file mode 100644
index 00000000..cb9ea8b6
--- /dev/null
+++ b/askbot/skins/default/media/images/vote-arrow-up-new.png
Binary files differ
diff --git a/askbot/skins/default/media/images/vote-arrow-up-on-new.png b/askbot/skins/default/media/images/vote-arrow-up-on-new.png
new file mode 100644
index 00000000..ef895206
--- /dev/null
+++ b/askbot/skins/default/media/images/vote-arrow-up-on-new.png
Binary files differ
diff --git a/askbot/skins/default/media/images/vote-background.png b/askbot/skins/default/media/images/vote-background.png
new file mode 100644
index 00000000..0e1ded6e
--- /dev/null
+++ b/askbot/skins/default/media/images/vote-background.png
Binary files differ
diff --git a/askbot/skins/default/media/js/live_search.js b/askbot/skins/default/media/js/live_search.js
deleted file mode 100644
index 0682631d..00000000
--- a/askbot/skins/default/media/js/live_search.js
+++ /dev/null
@@ -1,612 +0,0 @@
-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 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();
- search_url = askbot['urls']['questions'] + 'reset_query:true/';
- reset_query(sortMethod);
- }
- );
- query.after(x_button);
- }
- } else {
- $('input[name=reset_query]').remove();
- query.attr('class', 'searchInput');
- }
- };
-
- 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';
- }
- };
-
- 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();
- }
- }
- };
-
- 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 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 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;';
- }
- output += '</span>' +
- '<div>' + word + '</div>' +
- '</div>';
- return output;
- };
-
- 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_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> ';
- }
- }
- else {
- return '';
- }
- };
-
- 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 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');
- }
- 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 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) +
- }
- user_html += '</div>';
- return user_html;
- };
-
- var render_tag = function(tag_name, linkable, deletable, query_string){
- var tag = new Tag();
- tag.setName(tag_name);
- tag.setDeletable(deletable);
- tag.setLinkable(linkable);
- tag.setUrlParams(query_string);
- return tag.getElement().outerHTML();
- };
-
- var render_tags = function(tags, linkable, deletable, query_string){
- var tags_html = '<ul class="tags">';
- $.each(tags, function(idx, item){
- tags_html += render_tag(item, linkable, deletable, query_string);
- });
- tags_html += '</ul>';
- return tags_html;
- };
-
- var render_question = function(question, query_string){
- var entry_html =
- '<div class="short-summary">' +
- '<div class="counts">' +
- render_counter(
- question['views'],
- question['views_word'],
- 'views',
- question['views_class']
- ) +
- render_counter(
- question['answers'],
- question['answers_word'],
- 'answers',
- question['answers_class']
- ) +
- render_counter(
- question['votes'],
- question['votes_word'],
- 'votes',
- question['votes_class']
- ) +
- '<div style="clear:both"></div>' +
- render_user_info(question) +
- '</div>' +
- render_title(question) +
- render_tags(question['tags'], true, false, query_string) +
- '</div>';
- return entry_html;
- };
-
- var render_question_list = function(questions, query_string){
- var output = '';
- for (var i=0; i<questions.length; i++){
- output += render_question(questions[i], query_string);
- }
- return output;
- };
-
- 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 html = '';
- for (var i=0; i<tags.length; i++){
- html += render_tag(tags[i]['name'], true, false, query_string);
- 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 set_question_count = function(count_html){
- $('#question-count').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 search_tags = $('#search-tags');
- search_tags.children().remove();
- var tags_html = '';
- $.each(tags, function(idx, tag_name){
- var tag = new Tag();
- tag.setName(tag_name);
- tag.setDeletable(true);
- tag.setLinkable(false);
- tag.setDeleteHandler(
- function(){
- remove_search_tag(tag_name);
- }
- );
- search_tags.append(tag.getElement());
- });
- };
-
- var create_relevance_tab = function(query_string){
- relevance_tab = $('<a></a>');
- href = '/questions/' + replace_in_url(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 replace_in_url = function (query_string, param){
- values = param.split(':')
- type = values[0]
- value = values[1]
- params = query_string.split('/')
- url=""
-
- for (var i = 0; i < params.length; i++){
- if (params[i] !== ''){
- if (params[i].substring(0, type.length) == type){
- url += param + '/'
- }
- else{
- url += params[i] + '/'
- }
- }
- }
-
- return url
-
- }
-
- var remove_from_url = function (query_string, type){
- params = query_string.split('/')
- url=""
- for (var i = 0; i < params.length; i++){
- if (params[i] !== ''){
- if (params[i].substring(0, type.length) !== type){
- url += params[i] + '/'
- }
- }
- }
- return url
- }
-
- var set_section_tabs = function(query_string){
- var tabs = $('#section_tabs>a');
- tabs.each(function(index, element){
- var tab = $(element);
- var tab_name = tab.attr('id').replace(/^by_/,'');
- href = '/questions/' + replace_in_url(query_string, 'section:'+tab_name)
- tab.attr(
- 'href',
- href
- );
- });
- };
-
- 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){
- href = '/questions/' + replace_in_url(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);
- var name = bits[0];
- var sense = bits[1];//sense of sort
- var antisense = (sense == 'asc' ? 'desc':'asc');
- var arrow = (sense == 'asc' ? ' &#9650;':' &#9660;');
- var active_tab = $('#by_' + name);
- active_tab.attr('class', 'on');
- active_tab.attr('title', sortButtonData[name][antisense + '_tooltip']);
- active_tab.html(sortButtonData[name]['label'] + arrow);
- };
-
- 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(query_string);
- $('#sort_tabs>span').after(relevance_tab);
- }
- }
- else {
- if (relevance_tab.length > 0){
- relevance_tab.remove();
- }
- }
- };
-
- var remove_search_tag = function(tag_name){
- $.ajax({
- url: askbot['urls']['questions']+'remove_tag:'+escape(tag_name)+'/',
- dataType: 'json',
- success: render_result,
- complete: try_again
- });
- };
-
- var activate_search_tags = function(){
- var search_tags = $('#search-tags .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_ask_page_result = function(data, text_status, xhr){
- var container = $('#' + q_list_sel);
- container.fadeOut(200, function() {
- container.children().remove();
- if (data.length > 5){
- container.css('overflow-y', 'scroll');
- container.css('height', '120px');
- } else {
- container.css('height', data.length * 24 + 'px');
- container.css('overflow-y', 'hidden');
- }
- $.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.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(render_question_list(data['questions'], data['query_string']));
- //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'], data['query_string']);
- render_relevance_sort_tab(data['query_string']);
- set_active_sort_tab(sortMethod, data['query_string']);
- set_section_tabs(data['query_string']);
- query.focus();
-
- //show new div with a fadeIn effect
- old_list.fadeOut(200, function() {
- 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;
- }
-
- 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 = '';
- }
-
- var refresh_main_page = function(){
- $.ajax({
- url: askbot['urls']['questions'],
- data: {preserve_state: true},
- dataType: 'json',
- success: render_main_page_result
- });
- };
-
- return {
- refresh: function(){
- query = $('input#keywords');
- refresh_main_page();
- },
- init: function(mode, query_string){
- 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';
- }
- }
- search_url = askbot['urls']['questions']; //resetting search_url every times
- params = query_string.split('/')
- for (var i = 0; i < params.length; i++){
- if (params[i] !== ''){
- if (params[i].substring(0, 5) == "sort:"){ //change the sort method
- search_url += 'sort:'+sortMethod+'/'
- search_url += 'query:'+ cur_text.split(' ').join('+') + '/' //we add the query here
- }
- else{
- search_url += params[i] + '/';
- }
- }
- }
- //search_url = '/questions/'+search_url
- send_query(cur_text, sortMethod);
- };
- restart_query = function() {
- reset_sort_method();
- refresh_x_button();
- search_url = askbot['urls']['questions'] + 'reset_query:true/';
- 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;
- }
- };
-
-};
diff --git a/askbot/skins/default/media/js/post.js b/askbot/skins/default/media/js/post.js
deleted file mode 100644
index 52772cc0..00000000
--- a/askbot/skins/default/media/js/post.js
+++ /dev/null
@@ -1,1665 +0,0 @@
-/*
-Scripts for cnprog.com
-Project Name: Lanai
-All Rights Resevred 2008. CNPROG.COM
-*/
-var lanai =
-{
- /**
- * Finds any <pre><code></code></pre> tags which aren't registered for
- * pretty printing, adds the appropriate class name and invokes prettify.
- */
- highlightSyntax: function(){
- var styled = false;
- $("pre code").parent().each(function(){
- if (!$(this).hasClass('prettyprint')){
- $(this).addClass('prettyprint');
- styled = true;
- }
- });
-
- if (styled){
- prettyPrint();
- }
- }
-};
-
-function appendLoader(element) {
- element.append('<img class="ajax-loader" ' +
- 'src="' + mediaUrl("media/images/indicator.gif") + '" title="' +
- $.i18n._('loading...') +
- '" alt="' +
- $.i18n._('loading...') +
- '" />');
-}
-
-function removeLoader() {
- $("img.ajax-loader").remove();
-}
-
-function setSubmitButtonDisabled(form, isDisabled) {
- form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : "");
-}
-
-function enableSubmitButton(form) {
- setSubmitButtonDisabled(form, false);
-}
-
-function disableSubmitButton(form) {
- setSubmitButtonDisabled(form, true);
-}
-
-function setupFormValidation(form, validationRules, validationMessages, onSubmitCallback) {
- enableSubmitButton(form);
- form.validate({
- debug: true,
- rules: (validationRules ? validationRules : {}),
- messages: (validationMessages ? validationMessages : {}),
- errorElement: "span",
- errorClass: "form-error",
- errorPlacement: function(error, element) {
- var span = element.next().find("span.form-error");
- if (span.length === 0) {
- span = element.parent().find("span.form-error");
- if (span.length === 0){
- //for resizable textarea
- var element_id = element.attr('id');
- span = $("label[for='" + element_id + "']");
- }
- }
- span.replaceWith(error);
- },
- submitHandler: function(form_dom) {
- disableSubmitButton($(form_dom));
-
- if (onSubmitCallback){
- onSubmitCallback();
- }
- else{
- form_dom.submit();
- }
- }
- });
-}
-
-var validateTagLength = function(value){
- var tags = getUniqueWords(value);
- var are_tags_ok = true;
- $.each(tags, function(index, value){
- if (value.length > askbot['settings']['maxTagLength']){
- are_tags_ok = false;
- }
- });
- return are_tags_ok;
-};
-var validateTagCount = function(value){
- var tags = getUniqueWords(value);
- return (tags.length <= askbot['settings']['maxTagsPerPost']);
-};
-
-$.validator.addMethod('limit_tag_count', validateTagCount);
-$.validator.addMethod('limit_tag_length', validateTagLength);
-
-var CPValidator = function(){
- return {
- getQuestionFormRules : function(){
- return {
- tags: {
- required: true,
- maxlength: 105,
- limit_tag_count: true,
- limit_tag_length: true
- },
- text: {
- required: true,
- minlength: 10
- }
- /*title: {
- required: true,
- minlength: 10
- }*/
- };
- },
- getQuestionFormMessages: function(){
- return {
- tags: {
- required: " " + $.i18n._('tags cannot be empty'),
- maxlength: askbot['messages']['tagLimits'],
- limit_tag_count: askbot['messages']['maxTagsPerPost'],
- limit_tag_length: askbot['messages']['maxTagLength']
- },
- text: {
- required: " " + $.i18n._('content cannot be empty'),
- minlength: $.i18n._('content minchars').replace('{0}', 10)
- },
- title: {
- required: " " + $.i18n._('please enter title'),
- minlength: $.i18n._('title minchars').replace('{0}', 10)
- }
- };
- }
- };
-}();
-
-/**
- * @constructor
- * @extends {SimpleControl}
- * @param {Comment} comment to upvote
- */
-var CommentVoteButton = function(comment){
- SimpleControl.call(this);
- /**
- * @param {Comment}
- */
- this._comment = comment;
- /**
- * @type {boolean}
- */
- this._voted = false;
- /**
- * @type {number}
- */
- this._score = 0;
-};
-inherits(CommentVoteButton, SimpleControl);
-/**
- * @param {number} score
- */
-CommentVoteButton.prototype.setScore = function(score){
- this._score = score;
- if (this._element){
- this._element.html(score);
- }
-};
-/**
- * @param {boolean} voted
- */
-CommentVoteButton.prototype.setVoted = function(voted){
- this._voted = voted;
- if (this._element){
- this._element.addClass('upvoted');
- }
-};
-
-CommentVoteButton.prototype.getVoteHandler = function(){
- var me = this;
- var comment = this._comment;
- return function(){
- var voted = me._voted;
- var post_id = me._comment.getId();
- var data = {
- cancel_vote: voted ? true:false,
- post_id: post_id
- };
- $.ajax({
- type: 'POST',
- data: data,
- dataType: 'json',
- url: askbot['urls']['upvote_comment'],
- cache: false,
- success: function(data){
- if (data['success'] == true){
- me.setScore(data['score']);
- me.setVoted(true);
- } else {
- showMessage(comment.getElement(), data['message'], 'after');
- }
- }
- });
- };
-};
-
-CommentVoteButton.prototype.decorate = function(element){
- this._element = element;
- this.setHandler(this.getVoteHandler());
-
- var element = this._element;
- var comment = this._comment;
- /* can't call comment.getElement() here due
- * an issue in the getElement() of comment
- * so use an "illegal" access to comment._element here
- */
- comment._element.mouseenter(function(){
- //outside height may not be known
- //var height = comment.getElement().height();
- //element.height(height);
- element.addClass('hover');
- });
- comment._element.mouseleave(function(){
- element.removeClass('hover');
- });
-
-};
-
-CommentVoteButton.prototype.createDom = function(){
- this._element = this.makeElement('div');
- if (this._score > 0){
- this._element.html(this._score);
- }
- this._element.addClass('upvote');
- if (this._voted){
- this._element.addClass('upvoted');
- }
- this.decorate(this._element);
-};
-
-/**
- * legacy Vote class
- * handles all sorts of vote-like operations
- */
-var Vote = function(){
- // All actions are related to a question
- var questionId;
- //question slug to build redirect urls
- var questionSlug;
- // The object we operate on actually. It can be a question or an answer.
- var postId;
- var questionAuthorId;
- var currentUserId;
- var answerContainerIdPrefix = 'answer-container-';
- var voteContainerId = 'vote-buttons';
- var imgIdPrefixAccept = 'answer-img-accept-';
- var classPrefixFollow= 'button follow';
- var classPrefixFollowed= 'button followed';
- var imgIdPrefixQuestionVoteup = 'question-img-upvote-';
- var imgIdPrefixQuestionVotedown = 'question-img-downvote-';
- var imgIdPrefixAnswerVoteup = 'answer-img-upvote-';
- var imgIdPrefixAnswerVotedown = 'answer-img-downvote-';
- var divIdFavorite = 'favorite-number';
- var commentLinkIdPrefix = 'comment-';
- var voteNumberClass = "vote-number";
- var offensiveIdPrefixQuestionFlag = 'question-offensive-flag-';
- var offensiveIdPrefixAnswerFlag = 'answer-offensive-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';
-
- var acceptAnonymousMessage = $.i18n._('insufficient privilege');
- var acceptOwnAnswerMessage = $.i18n._('cannot pick own answer as best');
-
- var pleaseLogin = " <a href='" + askbot['urls']['user_signin']
- + "?next=" + askbot['urls']['question_url_template']
- + "'>"
- + $.i18n._('please login') + "</a>";
-
- var favoriteAnonymousMessage = $.i18n._('anonymous users cannot follow questions') + pleaseLogin;
- var subscribeAnonymousMessage = $.i18n._('anonymous users cannot subscribe to questions') + pleaseLogin;
- var voteAnonymousMessage = $.i18n._('anonymous users cannot vote') + pleaseLogin;
- //there were a couple of more messages...
- var offensiveConfirmation = $.i18n._('please confirm offensive');
- var offensiveAnonymousMessage = $.i18n._('anonymous users cannot flag offensive posts') + pleaseLogin;
- var removeConfirmation = $.i18n._('confirm delete');
- var removeAnonymousMessage = $.i18n._('anonymous users cannot delete/undelete') + pleaseLogin;
- var recoveredMessage = $.i18n._('post recovered');
- var deletedMessage = $.i18n._('post deleted');
-
- var VoteType = {
- acceptAnswer : 0,
- questionUpVote : 1,
- questionDownVote : 2,
- favorite : 4,
- answerUpVote: 5,
- answerDownVote:6,
- offensiveQuestion : 7,
- offensiveAnswer:8,
- removeQuestion: 9,
- removeAnswer:10,
- questionSubscribeUpdates:11,
- questionUnsubscribeUpdates:12
- };
-
- var getFavoriteButton = function(){
- var favoriteButton = 'div.'+ voteContainerId +' a[class='+ classPrefixFollow +']';
- favoriteButton += ', div.'+ voteContainerId +' a[class='+ classPrefixFollowed +']';
- return $(favoriteButton);
- };
- var getFavoriteNumber = function(){
- var favoriteNumber = '#'+ divIdFavorite ;
- return $(favoriteNumber);
- };
- var getQuestionVoteUpButton = function(){
- var questionVoteUpButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixQuestionVoteup +']';
- return $(questionVoteUpButton);
- };
- var getQuestionVoteDownButton = function(){
- var questionVoteDownButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixQuestionVotedown +']';
- return $(questionVoteDownButton);
- };
- var getAnswerVoteUpButtons = function(){
- var answerVoteUpButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAnswerVoteup +']';
- return $(answerVoteUpButton);
- };
- var getAnswerVoteDownButtons = function(){
- var answerVoteDownButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAnswerVotedown +']';
- return $(answerVoteDownButton);
- };
- var getAnswerVoteUpButton = function(id){
- var answerVoteUpButton = 'div.'+ voteContainerId +' img[id='+ imgIdPrefixAnswerVoteup + id + ']';
- return $(answerVoteUpButton);
- };
- var getAnswerVoteDownButton = function(id){
- var answerVoteDownButton = 'div.'+ voteContainerId +' img[id='+ imgIdPrefixAnswerVotedown + id + ']';
- return $(answerVoteDownButton);
- };
-
- var getOffensiveQuestionFlag = function(){
- var offensiveQuestionFlag = '#question-table span[class='+ offensiveClassFlag +']';
- return $(offensiveQuestionFlag);
- };
-
- var getOffensiveAnswerFlags = function(){
- var offensiveQuestionFlag = 'div.answer span[class='+ offensiveClassFlag +']';
- return $(offensiveQuestionFlag);
- };
-
- var getremoveQuestionLink = function(){
- var removeQuestionLink = 'div#question-controls a[id^='+ removeQuestionLinkIdPrefix +']';
- return $(removeQuestionLink);
- };
-
- var getquestionSubscribeUpdatesCheckbox = function(){
- return $('#' + questionSubscribeUpdates);
- };
-
- var getquestionSubscribeSidebarCheckbox= function(){
- return $('#' + questionSubscribeSidebar);
- };
-
- var getremoveAnswersLinks = function(){
- var removeAnswerLinks = 'div.answer-controls a[id^='+ removeAnswerLinkIdPrefix +']';
- return $(removeAnswerLinks);
- };
-
- var setVoteImage = function(voteType, undo, object){
- var flag = undo ? "" : "-on";
- var arrow = (voteType == VoteType.questionUpVote || voteType == VoteType.answerUpVote) ? "up" : "down";
- object.attr("src", mediaUrl("media/images/vote-arrow-"+ arrow + flag +".png"));
-
- // if undo voting, then undo the pair of arrows.
- if(undo){
- if(voteType == VoteType.questionUpVote || voteType == VoteType.questionDownVote){
- $(getQuestionVoteUpButton()).attr("src", mediaUrl("media/images/vote-arrow-up.png"));
- $(getQuestionVoteDownButton()).attr("src", mediaUrl("media/images/vote-arrow-down.png"));
- }
- else{
- $(getAnswerVoteUpButton(postId)).attr("src", mediaUrl("media/images/vote-arrow-up.png"));
- $(getAnswerVoteDownButton(postId)).attr("src", mediaUrl("media/images/vote-arrow-down.png"));
- }
- }
- };
-
- var setVoteNumber = function(object, number){
- var voteNumber = object.parent('div.'+ voteContainerId).find('div.'+ voteNumberClass);
- $(voteNumber).text(number);
- };
-
- var bindEvents = function(){
- // accept answers
- if(questionAuthorId == currentUserId){
- var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']';
- $(acceptedButtons).unbind('click').click(function(event){
- Vote.accept($(event.target));
- });
- }
- // set favorite question
- var favoriteButton = getFavoriteButton();
- favoriteButton.unbind('click').click(function(event){
- //Vote.favorite($(event.target));
- Vote.favorite(favoriteButton);
- });
-
- // question vote up
- var questionVoteUpButton = getQuestionVoteUpButton();
- questionVoteUpButton.unbind('click').click(function(event){
- Vote.vote($(event.target), VoteType.questionUpVote);
- });
-
- var questionVoteDownButton = getQuestionVoteDownButton();
- questionVoteDownButton.unbind('click').click(function(event){
- Vote.vote($(event.target), VoteType.questionDownVote);
- });
-
- var answerVoteUpButton = getAnswerVoteUpButtons();
- answerVoteUpButton.unbind('click').click(function(event){
- Vote.vote($(event.target), VoteType.answerUpVote);
- });
-
- var answerVoteDownButton = getAnswerVoteDownButtons();
- answerVoteDownButton.unbind('click').click(function(event){
- Vote.vote($(event.target), VoteType.answerDownVote);
- });
-
- getOffensiveQuestionFlag().unbind('click').click(function(event){
- Vote.offensive(this, VoteType.offensiveQuestion);
- });
-
- getOffensiveAnswerFlags().unbind('click').click(function(event){
- Vote.offensive(this, VoteType.offensiveAnswer);
- });
-
- getremoveQuestionLink().unbind('click').click(function(event){
- Vote.remove(this, VoteType.removeQuestion);
- });
-
- getquestionSubscribeUpdatesCheckbox().unbind('click').click(function(event){
- //despeluchar esto
- if (this.checked){
- getquestionSubscribeSidebarCheckbox().attr({'checked': true});
- Vote.vote($(event.target), VoteType.questionSubscribeUpdates);
- }
- else {
- getquestionSubscribeSidebarCheckbox().attr({'checked': false});
- Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates);
- }
- });
-
- getquestionSubscribeSidebarCheckbox().unbind('click').click(function(event){
- if (this.checked){
- getquestionSubscribeUpdatesCheckbox().attr({'checked': true});
- Vote.vote($(event.target), VoteType.questionSubscribeUpdates);
- }
- else {
- getquestionSubscribeUpdatesCheckbox().attr({'checked': false});
- Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates);
- }
- });
-
- getremoveAnswersLinks().unbind('click').click(function(event){
- Vote.remove(this, VoteType.removeAnswer);
- });
- };
-
- var submit = function(object, voteType, callback) {
- //this function submits votes
- $.ajax({
- type: "POST",
- cache: false,
- dataType: "json",
- url: askbot['urls']['vote_url_template'].replace('{{QuestionID}}', questionId),
- data: { "type": voteType, "postId": postId },
- error: handleFail,
- success: function(data){callback(object, voteType, data);}
- });
- };
-
- var handleFail = function(xhr, msg){
- alert("Callback invoke error: " + msg);
- };
-
- // callback function for Accept Answer action
- var callback_accept = function(object, voteType, data){
- if(data.allowed == "0" && data.success == "0"){
- showMessage(object, acceptAnonymousMessage);
- }
- else if(data.allowed == "-1"){
- 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 +"]");
- $(answers).removeClass("accepted-answer");
- 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");
- }
- else{
- showMessage(object, data.message);
- }
- };
-
- var callback_favorite = function(object, voteType, data){
- if(data.allowed == "0" && data.success == "0"){
- showMessage(
- object,
- favoriteAnonymousMessage.replace(
- '{{QuestionID}}',
- questionId).replace(
- '{{questionSlug}}',
- ''
- )
- );
- }
- else if(data.status == "1"){
- var follow_html = gettext('Follow');
- object.attr("class", 'button follow');
- object.html(follow_html);
- var fav = getFavoriteNumber();
- fav.removeClass("my-favorite-number");
- if(data.count === 0){
- data.count = '';
- fav.text('');
- }else{
- var fmts = ngettext('%s follower', '%s followers', data.count);
- fav.text(interpolate(fmts, [data.count]));
- }
- }
- else if(data.success == "1"){
- var followed_html = gettext('<div>Following</div><div class="unfollow">Unfollow</div>');
- object.html(followed_html);
- object.attr("class", 'button followed');
- var fav = getFavoriteNumber();
- var fmts = ngettext('%s follower', '%s followers', data.count);
- fav.text(interpolate(fmts, [data.count]));
- fav.addClass("my-favorite-number");
- }
- else{
- showMessage(object, data.message);
- }
- };
-
- var callback_vote = function(object, voteType, data){
- if (data.success == '0'){
- showMessage(object, data.message);
- return;
- }
- else {
- if (data.status == '1'){
- setVoteImage(voteType, true, object);
- }
- else {
- setVoteImage(voteType, false, object);
- }
- setVoteNumber(object, data.count);
- if (data.message && data.message.length > 0){
- showMessage(object, data.message);
- }
- return;
- }
- //may need to take a look at this again
- if (data.status == "1"){
- setVoteImage(voteType, true, object);
- setVoteNumber(object, data.count);
- }
- else if (data.success == "1"){
- setVoteImage(voteType, false, object);
- setVoteNumber(object, data.count);
- if (data.message.length > 0){
- showMessage(object, data.message);
- }
- }
- };
-
- var callback_offensive = function(object, voteType, data){
- //todo: transfer proper translations of these from i18n.js
- //to django.po files
- //_('anonymous users cannot flag offensive posts') + pleaseLogin;
- if (data.success == "1"){
- $(object).children('span[class=darkred]').text("("+ data.count +")");
- }
- else {
- object = $(object);
- showMessage(object, data.message)
- }
- };
-
- var callback_remove = function(object, voteType, data){
- if (data.success == "1"){
- if (removeActionType == 'delete'){
- postNode.addClass('deleted');
- postRemoveLink.innerHTML = $.i18n._('undelete');
- showMessage(object, deletedMessage);
- }
- else if (removeActionType == 'undelete') {
- postNode.removeClass('deleted');
- postRemoveLink.innerHTML = $.i18n._('delete');
- showMessage(object, recoveredMessage);
- }
- }
- else {
- showMessage(object, data.message)
- }
- };
-
- return {
- init : function(qId, qSlug, questionAuthor, userId){
- questionId = qId;
- questionSlug = qSlug;
- questionAuthorId = questionAuthor;
- currentUserId = userId;
- bindEvents();
- },
-
- //accept answer
- accept: function(object){
- postId = object.attr("id").substring(imgIdPrefixAccept.length);
- submit(object, VoteType.acceptAnswer, callback_accept);
- },
- //mark question as favorite
- favorite: function(object){
- if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
- showMessage(
- object,
- favoriteAnonymousMessage.replace(
- "{{QuestionID}}",
- questionId
- ).replace(
- '{{questionSlug}}',
- questionSlug
- )
- );
- return false;
- }
- submit(object, VoteType.favorite, callback_favorite);
- },
-
- vote: function(object, voteType){
- if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
- if (voteType == VoteType.questionSubscribeUpdates || voteType == VoteType.questionUnsubscribeUpdates){
- getquestionSubscribeSidebarCheckbox().removeAttr('checked');
- getquestionSubscribeUpdatesCheckbox().removeAttr('checked');
- showMessage(object, subscribeAnonymousMessage);
- }else {
- showMessage(
- $(object),
- voteAnonymousMessage.replace(
- "{{QuestionID}}",
- questionId
- ).replace(
- '{{questionSlug}}',
- questionSlug
- )
- );
- }
- return false;
- }
- // up and downvote processor
- if (voteType == VoteType.answerUpVote){
- postId = object.attr("id").substring(imgIdPrefixAnswerVoteup.length);
- }
- else if (voteType == VoteType.answerDownVote){
- postId = object.attr("id").substring(imgIdPrefixAnswerVotedown.length);
- }
-
- submit(object, voteType, callback_vote);
- },
- //flag offensive
- offensive: function(object, voteType){
- if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
- showMessage(
- $(object),
- offensiveAnonymousMessage.replace(
- "{{QuestionID}}",
- questionId
- ).replace(
- '{{questionSlug}}',
- questionSlug
- )
- );
- return false;
- }
- if (confirm(offensiveConfirmation)){
- postId = object.id.substr(object.id.lastIndexOf('-') + 1);
- submit(object, voteType, callback_offensive);
- }
- },
- //delete question or answer (comments are deleted separately)
- remove: function(object, voteType){
- if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
- showMessage(
- $(object),
- removeAnonymousMessage.replace(
- '{{QuestionID}}',
- questionId
- ).replace(
- '{{questionSlug}}',
- questionSlug
- )
- );
- return false;
- }
- bits = object.id.split('-');
- postId = bits.pop();/* this seems to be used within submit! */
- postType = bits.shift();
-
- var do_proceed = false;
- if (postType == 'answer'){
- postNode = $('#answer-container-' + postId);
- }
- else if (postType == 'question'){
- postNode = $('#question-table');
- }
- postRemoveLink = object;
- if (postNode.hasClass('deleted')){
- removeActionType = 'undelete';
- do_proceed = true;
- }
- else {
- removeActionType = 'delete';
- do_proceed = confirm(removeConfirmation);
- }
- if (do_proceed) {
- submit($(object), voteType, callback_remove);
- }
- }
- };
-} ();
-
-var questionRetagger = function(){
-
- var oldTagsHTML = '';
- var tagInput = null;
- var tagsDiv = null;
- var retagLink = null;
-
- var restoreEventHandlers = function(){
- $(document).unbind('click');
- };
-
- var cancelRetag = function(){
- tagsDiv.html(oldTagsHTML);
- tagsDiv.removeClass('post-retag');
- tagsDiv.addClass('post-tags');
- restoreEventHandlers();
- initRetagger();
- };
-
- var render_tag = function(tag_name){
- //copy-paste from live search!!!
- var tag = new Tag();
- tag.setName(tag_name);
- return tag.getElement().outerHTML();
- };
-
- var drawNewTags = function(new_tags){
- new_tags = new_tags.split(/\s+/);
- var tags_html = ''
- $.each(new_tags, function(index, name){
- tags_html += render_tag(name);
- });
- tagsDiv.html(tags_html);
- };
-
- var doRetag = function(){
- $.ajax({
- type: "POST",
- url: retagUrl,
- dataType: "json",
- data: { tags: getUniqueWords(tagInput.val()).join(' ') },
- success: function(json) {
- if (json['success'] === true){
- new_tags = getUniqueWords(json['new_tags']);
- oldTagsHtml = '';
- cancelRetag();
- drawNewTags(new_tags.join(' '));
- }
- else {
- cancelRetag();
- showMessage(tagsDiv, json['message']);
- }
- },
- error: function(xhr, textStatus, errorThrown) {
- showMessage(tagsDiv, 'sorry, somethin is not right here');
- cancelRetag();
- }
- });
- return false;
- }
-
- var setupInputEventHandlers = function(input){
- input.keydown(function(e){
- if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)){
- cancelRetag();
- }
- });
- $(document).unbind('click').click(cancelRetag, false);
- input.click(function(){return false});
- };
-
- var createRetagForm = function(old_tags_string){
- var div = $('<form method="post"></form>');
- tagInput = $('<input id="retag_tags" type="text" autocomplete="off" name="tags" size="30"/>');
- //var tagLabel = $('<label for="retag_tags" class="error"></label>');
- tagInput.val(old_tags_string);
- //populate input
- var tagAc = new AutoCompleter({
- url: askbot['urls']['get_tag_list'],
- preloadData: true,
- minChars: 1,
- useCache: true,
- matchInside: true,
- maxCacheLength: 100,
- delay: 10
- });
- tagAc.decorate(tagInput);
- div.append(tagInput);
- //div.append(tagLabel);
- setupInputEventHandlers(tagInput);
-
- //button = $('<input type="submit" />');
- //button.val($.i18n._('save tags'));
- //div.append(button);
- //setupButtonEventHandlers(button);
- div.validate({//copy-paste from utils.js
- rules: {
- tags: {
- required: true,
- maxlength: askbot['settings']['maxTagsPerPost'] * askbot['settings']['maxTagLength'],
- limit_tag_count: true,
- limit_tag_length: true
- }
- },
- messages: {
- tags: {
- required: $.i18n._('tags cannot be empty'),
- maxlength: askbot['messages']['tagLimits'],
- limit_tag_count: askbot['messages']['maxTagsPerPost'],
- limit_tag_length: askbot['messages']['maxTagLength']
- }
- },
- submitHandler: doRetag,
- errorClass: "retag-error"
- });
-
- return div;
- };
-
- var getTagsAsString = function(tags_div){
- var links = tags_div.find('a');
- var tags_str = '';
- links.each(function(index, element){
- if (index === 0){
- tags_str = $(element).html();
- }
- else {
- tags_str += ' ' + $(element).html();
- }
- });
- return tags_str;
- };
-
- var noopHandler = function(){
- tagInput.focus();
- return false;
- };
-
- var deactivateRetagLink = function(){
- retagLink.unbind('click').click(noopHandler);
- retagLink.unbind('keypress').keypress(noopHandler);
- };
-
- var startRetag = function(){
- tagsDiv = $('#question-tags');
- oldTagsHTML = tagsDiv.html();//save to restore on cancel
- var old_tags_string = getTagsAsString(tagsDiv);
- var retag_form = createRetagForm(old_tags_string);
- tagsDiv.html('');
- tagsDiv.append(retag_form);
- tagsDiv.removeClass('post-tags');
- tagsDiv.addClass('post-retag');
- tagInput.focus();
- deactivateRetagLink();
- return false;
- };
-
- var setupClickAndEnterHandler = function(element, callback){
- element.unbind('click').click(callback);
- element.unbind('keypress').keypress(function(e){
- if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)){
- callback();
- }
- });
- }
-
- var initRetagger = function(){
- setupClickAndEnterHandler(retagLink, startRetag);
- };
-
- return {
- init: function(){
- retagLink = $('#retag');
- initRetagger();
- }
- };
-}();
-
-//constructor for the form
-var EditCommentForm = function(){
- WrappedElement.call(this);
- this._comment = null;
- this._comment_widget = null;
- this._element = null;
- this._text = '';
- this._id = 'edit-comment-form';
-};
-inherits(EditCommentForm, WrappedElement);
-
-EditCommentForm.prototype.getElement = function(){
- EditCommentForm.superClass_.getElement.call(this);
- this._textarea.val(this._text);
- return this._element;
-};
-
-EditCommentForm.prototype.attachTo = function(comment, mode){
- this._comment = comment;
- this._type = mode;
- this._comment_widget = comment.getContainerWidget();
- this._text = comment.getText();
- comment.getElement().after(this.getElement());
- comment.getElement().hide();
- this._comment_widget.hideButton();
- if (this._type == 'add'){
- this._submit_btn.html($.i18n._('add comment'));
- }
- else {
- this._submit_btn.html($.i18n._('save comment'));
- }
- this.getElement().show();
- this.focus();
- putCursorAtEnd(this._textarea);
-};
-
-EditCommentForm.prototype.getCounterUpdater = function(){
- //returns event handler
- var counter = this._text_counter;
- var handler = function(){
- var textarea = $(this);
- var length = textarea.val() ? textarea.val().length : 0;
- var length1 = maxCommentLength - 100;
- if (length1 < 0){
- length1 = Math.round(0.7*maxCommentLength);
- }
- var length2 = maxCommentLength - 30;
- if (length2 < 0){
- length2 = Math.round(0.9*maxCommentLength);
- }
-
- var color = 'maroon';
- if (length === 0){
- var feedback = $.i18n._('title minchars').replace('{0}', 10);
- }
- else if (length < 10){
- var feedback = $.i18n._('enter more characters').replace('{0}', 10 - length);
- }
- else {
- color = length > length2 ? "#f00" : length > length1 ? "#f60" : "#999";
- var feedback = $.i18n._('{0} characters left')
- .replace('{0}', maxCommentLength - length);
- }
- counter.html(feedback).css('color', color);
- };
- return handler;
-};
-
-EditCommentForm.prototype.canCancel = function(){
- if (this._element === null){
- return true;
- }
- var ctext = $.trim(this._textarea.val());
- if ($.trim(ctext) == $.trim(this._text)){
- return true;
- }
- else if (this.confirmAbandon()){
- return true;
- }
- this.focus();
- return false;
-};
-
-EditCommentForm.prototype.getCancelHandler = function(){
- var form = this;
- return function(){
- if (form.canCancel()){
- form.detach();
- }
- return false;
- };
-};
-
-EditCommentForm.prototype.detach = function(){
- if (this._comment === null){
- return;
- }
- this._comment.getContainerWidget().showButton();
- if (this._comment.isBlank()){
- this._comment.dispose();
- }
- else {
- this._comment.getElement().show();
- }
- this.reset();
- this._element = this._element.detach();
-};
-
-EditCommentForm.prototype.createDom = function(){
- this._element = $('<form></form>');
- this._element.attr('class', 'post-comments');
-
- var div = $('<div></div>');
- this._textarea = $('<textarea></textarea>');
- this._textarea.attr('id', this._id);
-
- /*
- this._help_text = $('<span></span>').attr('class', 'help-text');
- this._help_text.html(gettext('Markdown is allowed in the comments'));
- div.append(this._help_text);
-
- this._help_text = $('<div></div>').attr('class', 'clearfix');
- div.append(this._help_text);
- */
-
- this._element.append(div);
- div.append(this._textarea);
- this._text_counter = $('<span></span>').attr('class', 'counter');
- div.append(this._text_counter);
- this._submit_btn = $('<button class="submit small"></button>');
- div.append(this._submit_btn);
- this._cancel_btn = $('<button class="submit small"></button>');
- this._cancel_btn.html($.i18n._('cancel'));
- div.append(this._cancel_btn);
-
- setupButtonEventHandlers(this._submit_btn, this.getSaveHandler());
- setupButtonEventHandlers(this._cancel_btn, this.getCancelHandler());
-
- var update_counter = this.getCounterUpdater();
- var escape_handler = makeKeyHandler(27, this.getCancelHandler());
- this._textarea.attr('name', 'comment')
- .attr('cols', 60)
- .attr('rows', 5)
- .attr('maxlength', maxCommentLength)
- .blur(update_counter)
- .focus(update_counter)
- .keyup(update_counter)
- .keyup(escape_handler);
- if (askbot['settings']['saveCommentOnEnter']){
- var save_handler = makeKeyHandler(13, this.getSaveHandler());
- this._textarea.keydown(save_handler);
- }
- this._textarea.val(this._text);
-};
-
-EditCommentForm.prototype.enableButtons = function(){
- this._submit_btn.attr('disabled', '');
- this._cancel_btn.attr('disabled', '');
-};
-
-EditCommentForm.prototype.disableButtons = function(){
- this._submit_btn.attr('disabled', 'disabled');
- this._cancel_btn.attr('disabled', 'disabled');
-};
-
-EditCommentForm.prototype.reset = function(){
- this._comment = null;
- this._text = '';
- this._textarea.val('');
- this.enableButtons();
-};
-
-EditCommentForm.prototype.confirmAbandon = function(){
- this.focus(true);
- this._textarea.addClass('highlight');
- var answer = confirm($.i18n._('confirm abandon comment'));
- this._textarea.removeClass('highlight');
- return answer;
-};
-
-EditCommentForm.prototype.focus = function(hard){
- this._textarea.focus();
- if (hard === true){
- $(this._textarea).scrollTop();
- }
-};
-
-EditCommentForm.prototype.getSaveHandler = function(){
-
- var me = this;
- return function(){
- var text = me._textarea.val();
- if (text.length < 10){
- me.focus();
- return false;
- }
-
- var post_data = {
- comment: text
- };
-
- if (me._type == 'edit'){
- post_data['comment_id'] = me._comment.getId();
- post_url = askbot['urls']['editComment'];
- }
- else {
- post_data['post_type'] = me._comment.getParentType();
- post_data['post_id'] = me._comment.getParentId();
- post_url = askbot['urls']['postComments'];
- }
-
- me.disableButtons();
-
- $.ajax({
- type: "POST",
- url: post_url,
- dataType: "json",
- data: post_data,
- success: function(json) {
- if (me._type == 'add'){
- me._comment.dispose();
- me._comment.getContainerWidget().reRenderComments(json);
- }
- else {
- me._comment.setContent(json);
- me._comment.getElement().show();
- }
- me.detach();
- },
- error: function(xhr, textStatus, errorThrown) {
- me._comment.getElement().show();
- showMessage(me._comment.getElement(), xhr.responseText, 'after');
- me.detach();
- me.enableButtons();
- }
- });
- return false;
- };
-};
-
-//a single instance to reuse
-var editCommentForm = new EditCommentForm();
-
-var Comment = function(widget, data){
- WrappedElement.call(this);
- this._container_widget = widget;
- this._data = data || {};
- this._blank = true;//set to false by setContent
- this._element = null;
- this._delete_prompt = $.i18n._('delete this comment');
- if (data && data['is_deletable']){
- this._deletable = data['is_deletable'];
- }
- else {
- this._deletable = false;
- }
- if (data && data['is_editable']){
- this._editable = data['is_deletable'];
- }
- else {
- this._editable = false;
- }
-};
-inherits(Comment, WrappedElement);
-
-Comment.prototype.decorate = function(element){
- this._element = $(element);
- var parent_type = this._element.parent().parent().attr('id').split('-')[2];
- var comment_id = this._element.attr('id').replace('comment-','');
- this._data = {id: comment_id};
- var delete_img = this._element.find('span.delete-icon');
- if (delete_img.length > 0){
- this._deletable = true;
- this._delete_icon = new DeleteIcon(this.deletePrompt);
- this._delete_icon.setHandler(this.getDeleteHandler());
- this._delete_icon.decorate(delete_img);
- }
- var edit_link = this._element.find('a.edit');
- if (edit_link.length > 0){
- this._editable = true;
- this._edit_link = new EditLink();
- this._edit_link.setHandler(this.getEditHandler());
- this._edit_link.decorate(edit_link);
- }
-
- var vote = new CommentVoteButton(this);
- vote.decorate(this._element.find('.comment-votes .upvote'));
-
- this._blank = false;
-};
-
-Comment.prototype.isBlank = function(){
- return this._blank;
-};
-
-Comment.prototype.getId = function(){
- return this._data['id'];
-};
-
-Comment.prototype.hasContent = function(){
- return ('id' in this._data);
- //shortcut for 'user_url' 'html' 'user_display_name' 'comment_age'
-};
-
-Comment.prototype.hasText = function(){
- return ('text' in this._data);
-}
-
-Comment.prototype.getContainerWidget = function(){
- return this._container_widget;
-};
-
-Comment.prototype.getParentType = function(){
- return this._container_widget.getPostType();
-};
-
-Comment.prototype.getParentId = function(){
- return this._container_widget.getPostId();
-};
-
-Comment.prototype.setContent = function(data){
- this._data = data || this._data;
- this._element.html('');
- this._element.attr('class', 'comment');
- this._element.attr('id', 'comment-' + this._data['id']);
-
- var votes = this.makeElement('div');
- votes.addClass('comment-votes');
-
- var vote = new CommentVoteButton(this);
- if (this._data['upvoted_by_user']){
- vote.setVoted(true);
- }
- vote.setScore(this._data['score']);
- votes.append(vote.getElement());
-
- this._element.append(votes);
-
- this._comment_delete = $('<div class="comment-delete"></div>');
- if (this._deletable){
- this._delete_icon = new DeleteIcon(this._delete_prompt);
- this._delete_icon.setHandler(this.getDeleteHandler());
- this._comment_delete.append(this._delete_icon.getElement());
- }
- this._element.append(this._comment_delete);
-
- this._comment_body = $('<div class="comment-body"></div>');
- this._comment_body.html(this._data['html']);
- //this._comment_body.append(' &ndash; ');
-
- this._user_link = $('<a></a>').attr('class', 'author');
- this._user_link.attr('href', this._data['user_url']);
- this._user_link.html(this._data['user_display_name']);
- 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_body.append(')');
-
- if (this._editable){
- this._edit_link = new EditLink();
- this._edit_link.setHandler(this.getEditHandler())
- this._comment_body.append(this._edit_link.getElement());
- }
- this._element.append(this._comment_body);
-
- this._blank = false;
-};
-
-Comment.prototype.dispose = function(){
- if (this._comment_body){
- this._comment_body.remove();
- }
- if (this._comment_delete){
- this._comment_delete.remove();
- }
- if (this._user_link){
- this._user_link.remove();
- }
- if (this._comment_age){
- this._comment_age.remove();
- }
- if (this._delete_icon){
- this._delete_icon.dispose();
- }
- if (this._edit_link){
- this._edit_link.dispose();
- }
- this._data = null;
- Comment.superClass_.dispose.call(this);
-};
-
-Comment.prototype.getElement = function(){
- Comment.superClass_.getElement.call(this);
- if (this.isBlank() && this.hasContent()){
- this.setContent();
- if (enableMathJax === true){
- MathJax.Hub.Queue(['Typeset', MathJax.Hub]);
- }
- }
- return this._element;
-};
-
-Comment.prototype.loadText = function(on_load_handler){
- var me = this;
- $.ajax({
- type: "GET",
- url: askbot['urls']['getComment'],
- data: {id: this._data['id']},
- success: function(json){
- me._data['text'] = json['text'];
- on_load_handler()
- },
- error: function(xhr, textStatus, exception) {
- showMessage(me.getElement(), xhr.responseText, 'after');
- }
- });
-};
-
-Comment.prototype.getText = function(){
- if (!this.isBlank()){
- if ('text' in this._data){
- return this._data['text'];
- }
- }
- return '';
-}
-
-Comment.prototype.getEditHandler = function(){
- var comment = this;
- return function(){
- if (editCommentForm.canCancel()){
- editCommentForm.detach();
- if (comment.hasText()){
- editCommentForm.attachTo(comment, 'edit');
- }
- else {
- comment.loadText(
- function(){
- editCommentForm.attachTo(comment, 'edit');
- }
- );
- }
- }
- };
-};
-
-Comment.prototype.getDeleteHandler = function(){
- var comment = this;
- var del_icon = this._delete_icon;
- return function(){
- if (confirm($.i18n._('confirm delete comment'))){
- comment.getElement().hide();
- $.ajax({
- type: 'POST',
- url: askbot['urls']['deleteComment'],
- data: { comment_id: comment.getId() },
- success: function(json, textStatus, xhr) {
- comment.dispose();
- },
- error: function(xhr, textStatus, exception) {
- comment.getElement().show()
- showMessage(del_icon.getElement(), xhr.responseText);
- },
- dataType: "json"
- });
- }
- };
-};
-
-var PostCommentsWidget = function(){
- WrappedElement.call(this);
- this._denied = false;
-};
-inherits(PostCommentsWidget, WrappedElement);
-
-PostCommentsWidget.prototype.decorate = function(element){
- var element = $(element);
- this._element = element;
-
- var widget_id = element.attr('id');
- var id_bits = widget_id.split('-');
- this._post_id = id_bits[3];
- this._post_type = id_bits[2];
- this._is_truncated = askbot['data'][widget_id]['truncated'];
- this._user_can_post = askbot['data'][widget_id]['can_post'];
-
- //see if user can comment here
- var controls = element.find('.controls');
- this._activate_button = controls.find('.button');
-
- if (this._user_can_post == false){
- setupButtonEventHandlers(
- this._activate_button,
- this.getReadOnlyLoadHandler()
- );
- }
- else {
- setupButtonEventHandlers(
- this._activate_button,
- this.getActivateHandler()
- );
- }
-
- this._cbox = element.find('.content');
- var comments = new Array();
- var me = this;
- this._cbox.children().each(function(index, element){
- var comment = new Comment(me);
- comments.push(comment)
- comment.decorate(element);
- });
- this._comments = comments;
-};
-
-PostCommentsWidget.prototype.getPostType = function(){
- return this._post_type;
-};
-
-PostCommentsWidget.prototype.getPostId = function(){
- return this._post_id;
-};
-
-PostCommentsWidget.prototype.hideButton = function(){
- this._activate_button.hide();
-};
-
-PostCommentsWidget.prototype.showButton = function(){
- if (this._is_truncated === false){
- this._activate_button.html(askbot['messages']['addComment']);
- }
- this._activate_button.show();
-}
-
-PostCommentsWidget.prototype.startNewComment = function(){
- var comment = new Comment(this);
- this._cbox.append(comment.getElement());
- editCommentForm.attachTo(comment, 'add');
-};
-
-PostCommentsWidget.prototype.needToReload = function(){
- return this._is_truncated;
-};
-
-PostCommentsWidget.prototype.getActivateHandler = function(){
- var me = this;
- return function() {
- if (editCommentForm.canCancel()){
- editCommentForm.detach();
- if (me.needToReload()){
- me.reloadAllComments(function(json){
- me.reRenderComments(json);
- me.startNewComment();
- });
- }
- else {
- me.startNewComment();
- }
- }
- };
-};
-
-PostCommentsWidget.prototype.getReadOnlyLoadHandler = function(){
- var me = this;
- return function(){
- me.reloadAllComments(function(json){
- me.reRenderComments(json);
- me._activate_button.remove();
- });
- };
-};
-
-
-PostCommentsWidget.prototype.reloadAllComments = function(callback){
- var post_data = {post_id: this._post_id, post_type: this._post_type};
- var me = this;
- $.ajax({
- type: "GET",
- url: askbot['urls']['postComments'],
- data: post_data,
- success: function(json){
- callback(json);
- me._is_truncated = false;
- },
- dataType: "json"
- });
-};
-
-PostCommentsWidget.prototype.reRenderComments = function(json){
- $.each(this._comments, function(i, item){
- item.dispose();
- });
- this._comments = new Array();
- var me = this;
- $.each(json, function(i, item){
- var comment = new Comment(me, item);
- me._cbox.append(comment.getElement());
- me._comments.push(comment);
- });
-};
-
-
-var socialSharing = function(){
-
- var SERVICE_DATA = {
- //url - template for the sharing service url, params are for the popup
- identica: {
- url: "http://identi.ca/notice/new?status_textarea={TEXT}%20{URL}",
- params: "width=820, height=526,toolbar=1,status=1,resizable=1,scrollbars=1"
- },
- twitter: {
- url: "http://twitter.com/share?url={URL}&ref=twitbtn&text={TEXT}",
- params: "width=820,height=526,toolbar=1,status=1,resizable=1,scrollbars=1"
- },
- facebook: {
- url: "http://www.facebook.com/sharer.php?u={URL}&ref=fbshare&t={TEXT}",
- 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}",
- params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1"
- }
- };
- var URL = "";
- var TEXT = "";
-
- var share_page = function(service_name){
- if (SERVICE_DATA[service_name]){
- var url = SERVICE_DATA[service_name]['url'];
- $.ajax({
- async: false,
- url: "http://json-tinyurl.appspot.com/?&callback=?",
- dataType: "json",
- data: {'url':URL},
- success: function(data){
- url = url.replace('{URL}', data.tinyurl);
- },
- error: function(data){
- url = url.replace('{URL}', URL);
- },
- complete: function(data){
- url = url.replace('{TEXT}', TEXT);
- var params = SERVICE_DATA[service_name]['params'];
- if(!window.open(url, "sharing", params)){
- window.location.href=share_url;
- }
- }
- });
- }
- }
-
- return {
- init: function(){
- URL = window.location.href;
- TEXT = escape($('h1 > a').html());
- var fb = $('a.facebook-share')
- var tw = $('a.twitter-share');
- var ln = $('a.linkedin-share');
- var ica = $('a.identica-share');
- copyAltToTitle(fb);
- copyAltToTitle(tw);
- copyAltToTitle(ln);
- copyAltToTitle(ica);
- setupButtonEventHandlers(fb, function(){share_page("facebook")});
- setupButtonEventHandlers(tw, function(){share_page("twitter")});
- setupButtonEventHandlers(ln, function(){share_page("linkedin")});
- setupButtonEventHandlers(ica, function(){share_page("identica")});
- }
- }
-}();
-
-/**
- * @constructor
- * @extends {SimpleControl}
- */
-var QASwapper = function(){
- SimpleControl.call(this);
- this._ans_id = null;
-};
-inherits(QASwapper, SimpleControl);
-
-QASwapper.prototype.decorate = function(element){
- this._element = element;
- this._ans_id = parseInt(element.attr('id').split('-').pop());
- var me = this;
- this.setHandler(function(){
- me.startSwapping();
- });
-};
-
-QASwapper.prototype.startSwapping = function(){
- while (true){
- var title = prompt(gettext('Please enter question title (>10 characters)'));
- if (title.length >= 10){
- var data = {new_title: title, answer_id: this._ans_id};
- $.ajax({
- type: "POST",
- cache: false,
- dataType: "json",
- url: askbot['urls']['swap_question_with_answer'],
- data: data,
- success: function(data){
- var url_template = askbot['urls']['question_url_template'];
- new_question_url = url_template.replace(
- '{{QuestionID}}',
- data['id']
- ).replace(
- '{{questionSlug}}',
- data['slug']
- );
- window.location.href = new_question_url;
- }
- });
- break;
- }
- }
-};
-
-$(document).ready(function() {
- $('[id^="comments-for-"]').each(function(index, element){
- var comments = new PostCommentsWidget();
- comments.decorate(element);
- });
- $('[id^="swap-question-with-answer-"]').each(function(idx, element){
- var swapper = new QASwapper();
- swapper.decorate($(element));
- });
- questionRetagger.init();
- socialSharing.init();
-});
-
-
-/*
-Prettify
-http://www.apache.org/licenses/LICENSE-2.0
-*/
-var PR_SHOULD_USE_CONTINUATION = true; var PR_TAB_WIDTH = 8; var PR_normalizedHtml; var PR; var prettyPrintOne; var prettyPrint; function _pr_isIE6() { var isIE6 = navigator && navigator.userAgent && /\bMSIE 6\./.test(navigator.userAgent); _pr_isIE6 = function() { return isIE6; }; return isIE6; } (function() { function wordSet(words) { words = words.split(/ /g); var set = {}; for (var i = words.length; --i >= 0; ) { var w = words[i]; if (w) { set[w] = null; } } return set; } var FLOW_CONTROL_KEYWORDS = "break continue do else for if return while "; var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " + "double enum extern float goto int long register short signed sizeof " + "static struct switch typedef union unsigned void volatile "; var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " + "new operator private protected public this throw true try "; var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " + "concept concept_map const_cast constexpr decltype " + "dynamic_cast explicit export friend inline late_check " + "mutable namespace nullptr reinterpret_cast static_assert static_cast " + "template typeid typename typeof using virtual wchar_t where "; var JAVA_KEYWORDS = COMMON_KEYWORDS + "boolean byte extends final finally implements import instanceof null " + "native package strictfp super synchronized throws transient "; var CSHARP_KEYWORDS = JAVA_KEYWORDS + "as base by checked decimal delegate descending event " + "fixed foreach from group implicit in interface internal into is lock " + "object out override orderby params readonly ref sbyte sealed " + "stackalloc string select uint ulong unchecked unsafe ushort var "; var JSCRIPT_KEYWORDS = COMMON_KEYWORDS + "debugger eval export function get null set undefined var with " + "Infinity NaN "; var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " + "goto if import last local my next no our print package redo require " + "sub undef unless until use wantarray while BEGIN END "; var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " + "elif except exec finally from global import in is lambda " + "nonlocal not or pass print raise try with yield " + "False True None "; var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" + " defined elsif end ensure false in module next nil not or redo rescue " + "retry self super then true undef unless until when yield BEGIN END "; var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " + "function in local set then until "; var ALL_KEYWORDS = (CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS); var PR_STRING = 'str'; var PR_KEYWORD = 'kwd'; var PR_COMMENT = 'com'; var PR_TYPE = 'typ'; var PR_LITERAL = 'lit'; var PR_PUNCTUATION = 'pun'; var PR_PLAIN = 'pln'; var PR_TAG = 'tag'; var PR_DECLARATION = 'dec'; var PR_SOURCE = 'src'; var PR_ATTRIB_NAME = 'atn'; var PR_ATTRIB_VALUE = 'atv'; var PR_NOCODE = 'nocode'; function isWordChar(ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } function spliceArrayInto(inserted, container, containerPosition, countReplaced) { inserted.unshift(containerPosition, countReplaced || 0); try { container.splice.apply(container, inserted); } finally { inserted.splice(0, 2); } } var REGEXP_PRECEDER_PATTERN = function() { var preceders = ["!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=", "&=", "(", "*", "*=", "+=", ",", "-=", "->", "/", "/=", ":", "::", ";", "<", "<<", "<<=", "<=", "=", "==", "===", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", "^", "^=", "^^", "^^=", "{", "|", "|=", "||", "||=", "~", "break", "case", "continue", "delete", "do", "else", "finally", "instanceof", "return", "throw", "try", "typeof"]; var pattern = '(?:' + '(?:(?:^|[^0-9.])\\.{1,3})|' + '(?:(?:^|[^\\+])\\+)|' + '(?:(?:^|[^\\-])-)'; for (var i = 0; i < preceders.length; ++i) { var preceder = preceders[i]; if (isWordChar(preceder.charAt(0))) { pattern += '|\\b' + preceder; } else { pattern += '|' + preceder.replace(/([^=<>:&])/g, '\\$1'); } } pattern += '|^)\\s*$'; return new RegExp(pattern); } (); var pr_amp = /&/g; var pr_lt = /</g; var pr_gt = />/g; var pr_quot = /\"/g; function attribToHtml(str) { return str.replace(pr_amp, '&amp;').replace(pr_lt, '&lt;').replace(pr_gt, '&gt;').replace(pr_quot, '&quot;'); } function textToHtml(str) { return str.replace(pr_amp, '&amp;').replace(pr_lt, '&lt;').replace(pr_gt, '&gt;'); } var pr_ltEnt = /&lt;/g; var pr_gtEnt = /&gt;/g; var pr_aposEnt = /&apos;/g; var pr_quotEnt = /&quot;/g; var pr_ampEnt = /&amp;/g; var pr_nbspEnt = /&nbsp;/g; function htmlToText(html) { var pos = html.indexOf('&'); if (pos < 0) { return html; } for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0; ) { var end = html.indexOf(';', pos); if (end >= 0) { var num = html.substring(pos + 3, end); var radix = 10; if (num && num.charAt(0) === 'x') { num = num.substring(1); radix = 16; } var codePoint = parseInt(num, radix); if (!isNaN(codePoint)) { html = (html.substring(0, pos) + String.fromCharCode(codePoint) + html.substring(end + 1)); } } } return html.replace(pr_ltEnt, '<').replace(pr_gtEnt, '>').replace(pr_aposEnt, "'").replace(pr_quotEnt, '"').replace(pr_ampEnt, '&').replace(pr_nbspEnt, ' '); } function isRawContent(node) { return 'XMP' === node.tagName; } function normalizedHtml(node, out) { switch (node.nodeType) { case 1: var name = node.tagName.toLowerCase(); out.push('<', name); for (var i = 0; i < node.attributes.length; ++i) { var attr = node.attributes[i]; if (!attr.specified) { continue; } out.push(' '); normalizedHtml(attr, out); } out.push('>'); for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } if (node.firstChild || !/^(?:br|link|img)$/.test(name)) { out.push('<\/', name, '>'); } break; case 2: out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"'); break; case 3: case 4: out.push(textToHtml(node.nodeValue)); break; } } var PR_innerHtmlWorks = null; function getInnerHtml(node) { if (null === PR_innerHtmlWorks) { var testNode = document.createElement('PRE'); testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />')); PR_innerHtmlWorks = !/</.test(testNode.innerHTML); } if (PR_innerHtmlWorks) { var content = node.innerHTML; if (isRawContent(node)) { content = textToHtml(content); } return content; } var out = []; for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } return out.join(''); } function makeTabExpander(tabWidth) { var SPACES = ' '; var charInLine = 0; return function(plainText) { var out = null; var pos = 0; for (var i = 0, n = plainText.length; i < n; ++i) { var ch = plainText.charAt(i); switch (ch) { case '\t': if (!out) { out = []; } out.push(plainText.substring(pos, i)); var nSpaces = tabWidth - (charInLine % tabWidth); charInLine += nSpaces; for (; nSpaces >= 0; nSpaces -= SPACES.length) { out.push(SPACES.substring(0, nSpaces)); } pos = i + 1; break; case '\n': charInLine = 0; break; default: ++charInLine; } } if (!out) { return plainText; } out.push(plainText.substring(pos)); return out.join(''); }; } var pr_chunkPattern = /(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g; var pr_commentPrefix = /^<!--/; var pr_cdataPrefix = /^<\[CDATA\[/; var pr_brPrefix = /^<br\b/i; var pr_tagNameRe = /^<(\/?)([a-zA-Z]+)/; function extractTags(s) { var matches = s.match(pr_chunkPattern); var sourceBuf = []; var sourceBufLen = 0; var extractedTags = []; if (matches) { for (var i = 0, n = matches.length; i < n; ++i) { var match = matches[i]; if (match.length > 1 && match.charAt(0) === '<') { if (pr_commentPrefix.test(match)) { continue; } if (pr_cdataPrefix.test(match)) { sourceBuf.push(match.substring(9, match.length - 3)); sourceBufLen += match.length - 12; } else if (pr_brPrefix.test(match)) { sourceBuf.push('\n'); ++sourceBufLen; } else { if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) { var name = match.match(pr_tagNameRe)[2]; var depth = 1; end_tag_loop: for (var j = i + 1; j < n; ++j) { var name2 = matches[j].match(pr_tagNameRe); if (name2 && name2[2] === name) { if (name2[1] === '/') { if (--depth === 0) { break end_tag_loop; } } else { ++depth; } } } if (j < n) { extractedTags.push(sourceBufLen, matches.slice(i, j + 1).join('')); i = j; } else { extractedTags.push(sourceBufLen, match); } } else { extractedTags.push(sourceBufLen, match); } } } else { var literalText = htmlToText(match); sourceBuf.push(literalText); sourceBufLen += literalText.length; } } } return { source: sourceBuf.join(''), tags: extractedTags }; } function isNoCodeTag(tag) { return !!tag.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g, ' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/); } function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { var shortcuts = {}; (function() { var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); for (var i = allPatterns.length; --i >= 0; ) { var patternParts = allPatterns[i]; var shortcutChars = patternParts[3]; if (shortcutChars) { for (var c = shortcutChars.length; --c >= 0; ) { shortcuts[shortcutChars.charAt(c)] = patternParts; } } } })(); var nPatterns = fallthroughStylePatterns.length; var notWs = /\S/; return function(sourceCode, opt_basePos) { opt_basePos = opt_basePos || 0; var decorations = [opt_basePos, PR_PLAIN]; var lastToken = ''; var pos = 0; var tail = sourceCode; while (tail.length) { var style; var token = null; var match; var patternParts = shortcuts[tail.charAt(0)]; if (patternParts) { match = tail.match(patternParts[1]); token = match[0]; style = patternParts[0]; } else { for (var i = 0; i < nPatterns; ++i) { patternParts = fallthroughStylePatterns[i]; var contextPattern = patternParts[2]; if (contextPattern && !contextPattern.test(lastToken)) { continue; } match = tail.match(patternParts[1]); if (match) { token = match[0]; style = patternParts[0]; break; } } if (!token) { style = PR_PLAIN; token = tail.substring(0, 1); } } decorations.push(opt_basePos + pos, style); pos += token.length; tail = tail.substring(token.length); if (style !== PR_COMMENT && notWs.test(token)) { lastToken = token; } } return decorations; }; } var PR_MARKUP_LEXER = createSimpleLexer([], [[PR_PLAIN, /^[^<]+/, null], [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/, null], [PR_COMMENT, /^<!--[\s\S]*?(?:-->|$)/, null], [PR_SOURCE, /^<\?[\s\S]*?(?:\?>|$)/, null], [PR_SOURCE, /^<%[\s\S]*?(?:%>|$)/, null], [PR_SOURCE, /^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i, null], [PR_TAG, /^<\/?\w[^<>]*>/, null]]); var PR_SOURCE_CHUNK_PARTS = /^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/; function tokenizeMarkup(source) { var decorations = PR_MARKUP_LEXER(source); for (var i = 0; i < decorations.length; i += 2) { if (decorations[i + 1] === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var sourceChunk = source.substring(start, end); var match = sourceChunk.match(PR_SOURCE_CHUNK_PARTS); if (match) { decorations.splice(i, 2, start, PR_TAG, start + match[1].length, PR_SOURCE, start + match[1].length + (match[2] || '').length, PR_TAG); } } } return decorations; } var PR_TAG_LEXER = createSimpleLexer([[PR_ATTRIB_VALUE, /^\'[^\']*(?:\'|$)/, null, "'"], [PR_ATTRIB_VALUE, /^\"[^\"]*(?:\"|$)/, null, '"'], [PR_PUNCTUATION, /^[<>\/=]+/, null, '<>/=']], [[PR_TAG, /^[\w:\-]+/, /^</], [PR_ATTRIB_VALUE, /^[\w\-]+/, /^=/], [PR_ATTRIB_NAME, /^[\w:\-]+/, null], [PR_PLAIN, /^\s+/, null, ' \t\r\n']]); function splitTagAttributes(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_TAG) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var chunk = source.substring(start, end); var subDecorations = PR_TAG_LEXER(chunk, start); spliceArrayInto(subDecorations, decorations, i, 2); i += subDecorations.length - 2; } } return decorations; } function sourceDecorator(options) { var shortcutStylePatterns = [], fallthroughStylePatterns = []; if (options.tripleQuotedStrings) { shortcutStylePatterns.push([PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, null, '\'"']); } else if (options.multiLineStrings) { shortcutStylePatterns.push([PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, null, '\'"`']); } else { shortcutStylePatterns.push([PR_STRING, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, '"\'']); } fallthroughStylePatterns.push([PR_PLAIN, /^(?:[^\'\"\`\/\#]+)/, null, ' \r\n']); if (options.hashComments) { shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); } if (options.cStyleComments) { fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); fallthroughStylePatterns.push([PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); } if (options.regexLiterals) { var REGEX_LITERAL = ('^/(?=[^/*])' + '(?:[^/\\x5B\\x5C]' + '|\\x5C[\\s\\S]' + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' + '(?:/|$)'); fallthroughStylePatterns.push([PR_STRING, new RegExp(REGEX_LITERAL), REGEXP_PRECEDER_PATTERN]); } var keywords = wordSet(options.keywords); options = null; var splitStringAndCommentTokens = createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); var styleLiteralIdentifierPuncRecognizer = createSimpleLexer([], [[PR_PLAIN, /^\s+/, null, ' \r\n'], [PR_PLAIN, /^[a-z_$@][a-z_$@0-9]*/i, null], [PR_LITERAL, /^0x[a-f0-9]+[a-z]/i, null], [PR_LITERAL, /^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?[a-z]*/i, null, '123456789'], [PR_PUNCTUATION, /^[^\s\w\.$@]+/, null]]); function splitNonStringNonCommentTokens(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_PLAIN) { var start, end, chunk, subDecs; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; chunk = source.substring(start, end); subDecs = styleLiteralIdentifierPuncRecognizer(chunk, start); for (var j = 0, m = subDecs.length; j < m; j += 2) { var subStyle = subDecs[j + 1]; if (subStyle === PR_PLAIN) { var subStart = subDecs[j]; var subEnd = j + 2 < m ? subDecs[j + 2] : chunk.length; var token = source.substring(subStart, subEnd); if (token === '.') { subDecs[j + 1] = PR_PUNCTUATION; } else if (token in keywords) { subDecs[j + 1] = PR_KEYWORD; } else if (/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)) { subDecs[j + 1] = token.charAt(0) === '@' ? PR_LITERAL : PR_TYPE; } } } spliceArrayInto(subDecs, decorations, i, 2); i += subDecs.length - 2; } } return decorations; } return function(sourceCode) { var decorations = splitStringAndCommentTokens(sourceCode); decorations = splitNonStringNonCommentTokens(sourceCode, decorations); return decorations; }; } var decorateSource = sourceDecorator({ keywords: ALL_KEYWORDS, hashComments: true, cStyleComments: true, multiLineStrings: true, regexLiterals: true }); function splitSourceNodes(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var subDecorations = decorateSource(source.substring(start, end)); for (var j = 0, m = subDecorations.length; j < m; j += 2) { subDecorations[j] += start; } spliceArrayInto(subDecorations, decorations, i, 2); i += subDecorations.length - 2; } } return decorations; } function splitSourceAttributes(source, decorations) { var nextValueIsSource = false; for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; var start, end; if (style === PR_ATTRIB_NAME) { start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; nextValueIsSource = /^on|^style$/i.test(source.substring(start, end)); } else if (style === PR_ATTRIB_VALUE) { if (nextValueIsSource) { start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var attribValue = source.substring(start, end); var attribLen = attribValue.length; var quoted = (attribLen >= 2 && /^[\"\']/.test(attribValue) && attribValue.charAt(0) === attribValue.charAt(attribLen - 1)); var attribSource; var attribSourceStart; var attribSourceEnd; if (quoted) { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue; } else { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue.substring(1, attribValue.length - 1); } var attribSourceDecorations = decorateSource(attribSource); for (var j = 0, m = attribSourceDecorations.length; j < m; j += 2) { attribSourceDecorations[j] += attribSourceStart; } if (quoted) { attribSourceDecorations.push(attribSourceEnd, PR_ATTRIB_VALUE); spliceArrayInto(attribSourceDecorations, decorations, i + 2, 0); } else { spliceArrayInto(attribSourceDecorations, decorations, i, 2); } } nextValueIsSource = false; } } return decorations; } function decorateMarkup(sourceCode) { var decorations = tokenizeMarkup(sourceCode); decorations = splitTagAttributes(sourceCode, decorations); decorations = splitSourceNodes(sourceCode, decorations); decorations = splitSourceAttributes(sourceCode, decorations); return decorations; } function recombineTagsAndDecorations(sourceText, extractedTags, decorations) { var html = []; var outputIdx = 0; var openDecoration = null; var currentDecoration = null; var tagPos = 0; var decPos = 0; var tabExpander = makeTabExpander(PR_TAB_WIDTH); var adjacentSpaceRe = /([\r\n ]) /g; var startOrSpaceRe = /(^| ) /gm; var newlineRe = /\r\n?|\n/g; var trailingSpaceRe = /[ \r\n]$/; var lastWasSpace = true; function emitTextUpTo(sourceIdx) { if (sourceIdx > outputIdx) { if (openDecoration && openDecoration !== currentDecoration) { html.push('</span>'); openDecoration = null; } if (!openDecoration && currentDecoration) { openDecoration = currentDecoration; html.push('<span class="', openDecoration, '">'); } var htmlChunk = textToHtml(tabExpander(sourceText.substring(outputIdx, sourceIdx))).replace(lastWasSpace ? startOrSpaceRe : adjacentSpaceRe, '$1&nbsp;'); lastWasSpace = trailingSpaceRe.test(htmlChunk); html.push(htmlChunk.replace(newlineRe, '<br />')); outputIdx = sourceIdx; } } while (true) { var outputTag; if (tagPos < extractedTags.length) { if (decPos < decorations.length) { outputTag = extractedTags[tagPos] <= decorations[decPos]; } else { outputTag = true; } } else { outputTag = false; } if (outputTag) { emitTextUpTo(extractedTags[tagPos]); if (openDecoration) { html.push('</span>'); openDecoration = null; } html.push(extractedTags[tagPos + 1]); tagPos += 2; } else if (decPos < decorations.length) { emitTextUpTo(decorations[decPos]); currentDecoration = decorations[decPos + 1]; decPos += 2; } else { break; } } emitTextUpTo(sourceText.length); if (openDecoration) { html.push('</span>'); } return html.join(''); } var langHandlerRegistry = {}; function registerLangHandler(handler, fileExtensions) { for (var i = fileExtensions.length; --i >= 0; ) { var ext = fileExtensions[i]; if (!langHandlerRegistry.hasOwnProperty(ext)) { langHandlerRegistry[ext] = handler; } else if ('console' in window) { console.log('cannot override language handler %s', ext); } } } registerLangHandler(decorateSource, ['default-code']); registerLangHandler(decorateMarkup, ['default-markup', 'html', 'htm', 'xhtml', 'xml', 'xsl']); registerLangHandler(sourceDecorator({ keywords: CPP_KEYWORDS, hashComments: true, cStyleComments: true }), ['c', 'cc', 'cpp', 'cs', 'cxx', 'cyc']); registerLangHandler(sourceDecorator({ keywords: JAVA_KEYWORDS, cStyleComments: true }), ['java']); registerLangHandler(sourceDecorator({ keywords: SH_KEYWORDS, hashComments: true, multiLineStrings: true }), ['bsh', 'csh', 'sh']); registerLangHandler(sourceDecorator({ keywords: PYTHON_KEYWORDS, hashComments: true, multiLineStrings: true, tripleQuotedStrings: true }), ['cv', 'py']); registerLangHandler(sourceDecorator({ keywords: PERL_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['perl', 'pl', 'pm']); registerLangHandler(sourceDecorator({ keywords: RUBY_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['rb']); registerLangHandler(sourceDecorator({ keywords: JSCRIPT_KEYWORDS, cStyleComments: true, regexLiterals: true }), ['js']); function prettyPrintOne(sourceCodeHtml, opt_langExtension) { try { var sourceAndExtractedTags = extractTags(sourceCodeHtml); var source = sourceAndExtractedTags.source; var extractedTags = sourceAndExtractedTags.tags; if (!langHandlerRegistry.hasOwnProperty(opt_langExtension)) { opt_langExtension = /^\s*</.test(source) ? 'default-markup' : 'default-code'; } var decorations = langHandlerRegistry[opt_langExtension].call({}, source); return recombineTagsAndDecorations(source, extractedTags, decorations); } catch (e) { if ('console' in window) { console.log(e); console.trace(); } return sourceCodeHtml; } } function prettyPrint(opt_whenDone) { var isIE6 = _pr_isIE6(); var codeSegments = [document.getElementsByTagName('pre'), document.getElementsByTagName('code'), document.getElementsByTagName('xmp')]; var elements = []; for (var i = 0; i < codeSegments.length; ++i) { for (var j = 0; j < codeSegments[i].length; ++j) { elements.push(codeSegments[i][j]); } } codeSegments = null; var k = 0; function doWork() { var endTime = (PR_SHOULD_USE_CONTINUATION ? new Date().getTime() + 250 : Infinity); for (; k < elements.length && new Date().getTime() < endTime; k++) { var cs = elements[k]; if (cs.className && cs.className.indexOf('prettyprint') >= 0) { var langExtension = cs.className.match(/\blang-(\w+)\b/); if (langExtension) { langExtension = langExtension[1]; } var nested = false; for (var p = cs.parentNode; p; p = p.parentNode) { if ((p.tagName === 'pre' || p.tagName === 'code' || p.tagName === 'xmp') && p.className && p.className.indexOf('prettyprint') >= 0) { nested = true; break; } } if (!nested) { var content = getInnerHtml(cs); content = content.replace(/(?:\r\n?|\n)$/, ''); var newContent = prettyPrintOne(content, langExtension); if (!isRawContent(cs)) { cs.innerHTML = newContent; } else { var pre = document.createElement('PRE'); for (var i = 0; i < cs.attributes.length; ++i) { var a = cs.attributes[i]; if (a.specified) { var aname = a.name.toLowerCase(); if (aname === 'class') { pre.className = a.value; } else { pre.setAttribute(a.name, a.value); } } } pre.innerHTML = newContent; cs.parentNode.replaceChild(pre, cs); cs = pre; } if (isIE6 && cs.tagName === 'PRE') { var lineBreaks = cs.getElementsByTagName('br'); for (var j = lineBreaks.length; --j >= 0; ) { var lineBreak = lineBreaks[j]; lineBreak.parentNode.replaceChild(document.createTextNode('\r\n'), lineBreak); } } } } } if (k < elements.length) { setTimeout(doWork, 250); } else if (opt_whenDone) { opt_whenDone(); } } doWork(); } window['PR_normalizedHtml'] = normalizedHtml; window['prettyPrintOne'] = prettyPrintOne; window['prettyPrint'] = prettyPrint; window['PR'] = { 'createSimpleLexer': createSimpleLexer, 'registerLangHandler': registerLangHandler, 'sourceDecorator': sourceDecorator, 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, 'PR_COMMENT': PR_COMMENT, 'PR_DECLARATION': PR_DECLARATION, 'PR_KEYWORD': PR_KEYWORD, 'PR_LITERAL': PR_LITERAL, 'PR_NOCODE': PR_NOCODE, 'PR_PLAIN': PR_PLAIN, 'PR_PUNCTUATION': PR_PUNCTUATION, 'PR_SOURCE': PR_SOURCE, 'PR_STRING': PR_STRING, 'PR_TAG': PR_TAG, 'PR_TYPE': PR_TYPE }; })();
diff --git a/askbot/skins/default/media/js/utils.js b/askbot/skins/default/media/js/utils.js
deleted file mode 100644
index 46d213f1..00000000
--- a/askbot/skins/default/media/js/utils.js
+++ /dev/null
@@ -1,437 +0,0 @@
-//var $, scriptUrl, askbotSkin
-var mediaUrl = function(resource){
- return scriptUrl + 'm/' + askbotSkin + '/' + resource;
-};
-
-var cleanUrl = function(url){
- var re = new RegExp('//', 'g');
- return url.replace(re, '/');
-};
-
-var copyAltToTitle = function(sel){
- sel.attr('title', sel.attr('alt'));
-};
-
-var animateHashes = function(){
- var id_value = window.location.hash;
- if (id_value != ""){
- var previous_color = $(id_value).css('background-color');
- $(id_value).css('backgroundColor', '#FFF8C6');
- $(id_value)
- .animate({backgroundColor: '#ff7f2a'}, 500)
- .animate({backgroundColor: '#FFF8C6'}, 500, function(){
- $(id_value).css('backgroundColor', previous_color);
- });
- }
-};
-
-var getUniqueWords = function(value){
- var words = $.trim(value).split(/\s+/);
- var uniques = new Object();
- var out = new Array();
- $.each(words, function(idx, item){
- if (!(item in uniques)){
- uniques[item] = 1;
- out.push(item);
- };
- });
- return out;
-};
-
-var showMessage = function(element, msg, where) {
- var div = $('<div class="vote-notification"><h3>' + msg + '</h3>(' +
- $.i18n._('click to close') + ')</div>');
-
- div.click(function(event) {
- $(".vote-notification").fadeOut("fast", function() { $(this).remove(); });
- });
-
- var where = where || 'parent';
-
- if (where == 'parent'){
- element.parent().append(div);
- }
- else {
- element.after(div);
- }
-
- div.fadeIn("fast");
-};
-
-//outer html hack - https://github.com/brandonaaron/jquery-outerhtml/
-(function($){
- var div;
- $.fn.outerHTML = function() {
- var elem = this[0],
- tmp;
- return !elem ? null
- : typeof ( tmp = elem.outerHTML ) === 'string' ? tmp
- : ( div = div || $('<div/>') ).html( this.eq(0).clone() ).html();
- };
-})(jQuery);
-
-var makeKeyHandler = function(key, callback){
- return function(e){
- if ((e.which && e.which == key) || (e.keyCode && e.keyCode == key)){
- if(!e.shiftKey){
- callback();
- return false;
- }
- }
- };
-};
-
-
-var setupButtonEventHandlers = function(button, callback){
- button.keydown(makeKeyHandler(13, callback));
- button.click(callback);
-};
-
-
-var putCursorAtEnd = function(element){
- var el = element.get()[0];
- if (el.setSelectionRange){
- var len = element.val().length * 2;
- el.setSelectionRange(len, len);
- }
- else{
- element.val(element.val());
- }
- element.scrollTop = 999999;
-};
-
-var setCheckBoxesIn = function(selector, value){
- return $(selector + '> input[type=checkbox]').attr('checked', value);
-};
-
-var notify = function() {
- var visible = false;
- return {
- show: function(html) {
- if (html) {
- $("body").css("margin-top", "2.2em");
- $(".notify span").html(html);
- }
- $(".notify").fadeIn("slow");
- visible = true;
- },
- close: function(doPostback) {
- if (doPostback) {
- $.post(
- askbot['urls']['mark_read_message'],
- { formdata: "required" }
- );
- }
- $(".notify").fadeOut("fast");
- $("body").css("margin-top", "0");
- visible = false;
- },
- isVisible: function() { return visible; }
- };
-} ();
-
-/* some google closure-like code for the ui elements */
-var inherits = function(childCtor, parentCtor) {
- /** @constructor taken from google closure */
- function tempCtor() {};
- tempCtor.prototype = parentCtor.prototype;
- childCtor.superClass_ = parentCtor.prototype;
- childCtor.prototype = new tempCtor();
- childCtor.prototype.constructor = childCtor;
-};
-
-/* wrapper around jQuery object */
-var WrappedElement = function(){
- this._element = null;
- this._in_document = false;
-};
-WrappedElement.prototype.setElement = function(element){
- this._element = element;
-};
-WrappedElement.prototype.createDom = function(){
- this._element = $('<div></div>');
-};
-WrappedElement.prototype.getElement = function(){
- if (this._element === null){
- this.createDom();
- }
- return this._element;
-};
-WrappedElement.prototype.inDocument = function(){
- return this._in_document;
-};
-WrappedElement.prototype.enterDocument = function(){
- return this._in_document = true;
-};
-WrappedElement.prototype.hasElement = function(){
- return (this._element !== null);
-};
-WrappedElement.prototype.makeElement = function(html_tag){
- //makes jQuery element with tags
- return $('<' + html_tag + '></' + html_tag + '>');
-};
-WrappedElement.prototype.dispose = function(){
- this._element.remove();
- this._in_document = false;
-};
-
-var SimpleControl = function(){
- WrappedElement.call(this);
- this._handler = null;
- this._title = null;
-};
-inherits(SimpleControl, WrappedElement);
-
-SimpleControl.prototype.setHandler = function(handler){
- this._handler = handler;
- if (this.hasElement()){
- this.setHandlerInternal();
- }
-};
-
-SimpleControl.prototype.setHandlerInternal = function(){
- //default internal setHandler behavior
- setupButtonEventHandlers(this._element, this._handler);
-};
-
-SimpleControl.prototype.setTitle = function(title){
- this._title = title;
-};
-
-var EditLink = function(){
- SimpleControl.call(this)
-};
-inherits(EditLink, SimpleControl);
-
-EditLink.prototype.createDom = function(){
- var element = $('<a></a>');
- element.addClass('edit');
- this.decorate(element);
-};
-
-EditLink.prototype.decorate = function(element){
- this._element = element;
- this._element.attr('title', $.i18n._('click to edit this comment'));
- this._element.html($.i18n._('edit'));
- this.setHandlerInternal();
-};
-
-var DeleteIcon = function(title){
- SimpleControl.call(this);
- this._title = title;
-};
-inherits(DeleteIcon, SimpleControl);
-
-DeleteIcon.prototype.decorate = function(element){
- this._element = element;
- this._element.attr('class', 'delete-icon');
- this._element.attr('title', this._title);
- if (this._handler !== null){
- this.setHandlerInternal();
- }
-};
-
-DeleteIcon.prototype.setHandlerInternal = function(){
- setupButtonEventHandlers(this._element, this._handler);
-};
-
-DeleteIcon.prototype.createDom = function(){
- this._element = this.makeElement('span');
- this.decorate(this._element);
-};
-
-var Tag = function(){
- SimpleControl.call(this);
- this._deletable = false;
- this._delete_handler = null;
- this._delete_icon_title = null;
- this._tag_title = null;
- this._name = null;
- this._url_params = null;
- this._inner_html_tag = 'a';
- this._html_tag = 'li';
-}
-inherits(Tag, SimpleControl);
-
-Tag.prototype.setName = function(name){
- this._name = name;
-};
-
-Tag.prototype.getName = function(){
- return this._name;
-};
-
-Tag.prototype.setHtmlTag = function(html_tag){
- this._html_tag = html_tag;
-};
-
-Tag.prototype.setDeletable = function(is_deletable){
- this._deletable = is_deletable;
-};
-
-Tag.prototype.setLinkable = function(is_linkable){
- if (is_linkable === true){
- this._inner_html_tag = 'a';
- } else {
- this._inner_html_tag = 'span';
- }
-};
-
-Tag.prototype.isLinkable = function(){
- return (this._inner_html_tag === 'a');
-};
-
-Tag.prototype.isDeletable = function(){
- return this._deletable;
-};
-
-Tag.prototype.isWildcard = function(){
- return (this.getName().substr(-1) === '*');
-};
-
-Tag.prototype.setUrlParams = function(url_params){
- this._url_params = url_params;
-};
-
-Tag.prototype.setHandlerInternal = function(){
- setupButtonEventHandlers(this._element.find('.tag'), this._handler);
-};
-
-/* delete handler will be specific to the task */
-Tag.prototype.setDeleteHandler = function(delete_handler){
- this._delete_handler = delete_handler;
- if (this.hasElement() && this.isDeletable()){
- this._delete_icon.setHandler(delete_handler);
- }
-};
-
-Tag.prototype.getDeleteHandler = function(){
- return this._delete_handler;
-};
-
-Tag.prototype.setDeleteIconTitle = function(title){
- this._delete_icon_title = title;
-};
-
-Tag.prototype.decorate = function(element){
- this._element = element;
- var del = element.find('.delete-icon');
- if (del.length === 1){
- this.setDeletable(true);
- this._delete_icon = new DeleteIcon();
- if (this._delete_icon_title != null){
- this._delete_icon.setTitle(this._delete_icon_title);
- }
- //do not set the delete handler here
- this._delete_icon.decorate(del);
- }
- this._inner_element = this._element.find('.tag');
- this._name = this.decodeTagName($.trim(this._inner_element.html()));
- if (this._title !== null){
- this._inner_element.attr('title', this._title);
- }
- if (this._handler !== null){
- this.setHandlerInternal();
- }
-};
-
-Tag.prototype.getDisplayTagName = function(){
- //replaces the trailing * symbol with the unicode asterisk
- return this._name.replace(/\*$/, '&#10045;');
-};
-
-Tag.prototype.decodeTagName = function(encoded_name){
- return encoded_name.replace('\u273d', '*');
-};
-
-Tag.prototype.createDom = function(){
- this._element = this.makeElement(this._html_tag);
- //render the outer element
- if (this._deletable){
- this._element.addClass('deletable-tag');
- }
- this._element.addClass('tag-left');
-
- //render the inner element
- this._inner_element = this.makeElement(this._inner_html_tag);
- if (this.isLinkable()){
- var url = askbot['urls']['questions'];
- var flag = false
- var author = ''
- if (this._url_params !== null){
- params = this._url_params.split('/')
- for (var i = 0; i < params.length; i++){
- if (params[i] !== ''){
- if (params[i].substring(0, 5) == "tags:"){
- tags = params[i].substr(5).split('+');
- new_tags = ''
- for(var j = 0; j < tags.length; j++){
- if(escape(tags[j]) !== escape(this.getName())){
- new_tags += escape(tags[j]) + '+';
- }
- }
- new_tags += escape(this.getName())
- url += 'tags:'+new_tags+'/'
- flag = true
- }
- else if (params[i].substring(0, 7) == "author:"){
- author = params[i];
- }
- else{
- url += params[i] + '/';
- }
- }
- }
- if (flag == false) {
- url += 'tags:'+escape(this.getName())+'/'
- }
- if (author !== '') {
- url += author+'/'
- }
- }
- else{
- url += 'tags:' + escape(this.getName()) + '/';
- }
- this._inner_element.attr('href', url);
- }
- this._inner_element.addClass('tag tag-right');
- this._inner_element.attr('rel', 'tag');
- if (this._title === null){
- this.setTitle(
- $.i18n._(
- "see questions tagged '{tag}'"
- ).replace(
- '{tag}',
- this.getName()
- )
- );
- }
- this._inner_element.attr('title', this._title);
- this._inner_element.html(this.getDisplayTagName());
-
- this._element.append(this._inner_element);
-
- if (!this.isLinkable() && this._handler !== null){
- this.setHandlerInternal();
- }
-
- if (this._deletable){
- this._delete_icon = new DeleteIcon();
- this._delete_icon.setHandler(this.getDeleteHandler());
- if (this._delete_icon_title !== null){
- this._delete_icon.setTitle(this._delete_icon_title);
- }
- this._element.append(this._delete_icon.getElement());
- }
-};
-
-//Search Engine Keyword Highlight with Javascript
-//http://scott.yang.id.au/code/se-hilite/
-Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["local","q"],["cnprog\\.","q"],["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c<Hilite.search_engines.length;c++){var f=Hilite.search_engines[c];e.compile("^http://(www\\.)?"+f[0],"i");var b=d.match(e);if(b){var a;if(isNaN(f[1])){a=Hilite.decodeReferrerQS(d,f[1])}else{a=b[f[1]+1]}if(a){a=decodeURIComponent(a);if(f.length>2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b<e.length;b++){e[b]=e[b].toLowerCase();if(Hilite.exact){c.push("\\b"+e[b]+"\\b")}else{c.push(e[b])}}c=new RegExp(c.join("|"),"i");var a={};for(var b=0;b<e.length;b++){if(Hilite.style_name_suffix){a[e[b]]=Hilite.style_name+(b+1)}else{a[e[b]]=Hilite.style_name}}var d=function(m){var j=c.exec(m.data);if(j){var n=j[0];var i="";var h=m.splitText(j.index);var g=h.splitText(n.length);var l=m.ownerDocument.createElement("SPAN");m.parentNode.replaceChild(l,h);l.className=a[n.toLowerCase()];l.appendChild(h);return l}else{return m}};Hilite.walkElements(f.childNodes[0],1,d)};Hilite.hilite=function(){var a=Hilite.debug_referrer?Hilite.debug_referrer:document.referrer;var b=null;a=Hilite.decodeReferrer(a);if(a&&((Hilite.elementid&&(b=document.getElementById(Hilite.elementid)))||(b=document.body))){Hilite.hiliteElement(b,a)}};Hilite.walkElements=function(d,f,e){var a=/^(script|style|textarea)/i;var c=0;while(d&&f>0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}};
-/* json2.js by D. Crockford */
-if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){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(key){return this.valueOf()}}var 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;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(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,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
-//jquery fieldselection
-(function(){var a={getSelection:function(){var b=this.jquery?this[0]:this;return(("selectionStart" in b&&function(){var c=b.selectionEnd-b.selectionStart;return{start:b.selectionStart,end:b.selectionEnd,length:c,text:b.value.substr(b.selectionStart,c)}})||(document.selection&&function(){b.focus();var d=document.selection.createRange();if(d==null){return{start:0,end:b.value.length,length:0}}var c=b.createTextRange();var e=c.duplicate();c.moveToBookmark(d.getBookmark());e.setEndPoint("EndToStart",c);return{start:e.text.length,end:e.text.length+d.text.length,length:d.text.length,text:d.text}})||function(){return{start:0,end:b.value.length,length:0}})()},replaceSelection:function(){var b=this.jquery?this[0]:this;var c=arguments[0]||"";return(("selectionStart" in b&&function(){b.value=b.value.substr(0,b.selectionStart)+c+b.value.substr(b.selectionEnd,b.value.length);return this})||(document.selection&&function(){b.focus();document.selection.createRange().text=c;return this})||function(){b.value+=c;return this})()}};jQuery.each(a,function(b){jQuery.fn[b]=this})})();
-//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);
diff --git a/askbot/skins/default/media/style/jquery.autocomplete.css b/askbot/skins/default/media/style/jquery.autocomplete.css
index b3d7b759..09b08192 100644
--- a/askbot/skins/default/media/style/jquery.autocomplete.css
+++ b/askbot/skins/default/media/style/jquery.autocomplete.css
@@ -4,8 +4,11 @@
.acResults {
padding: 0px;
border: 1px solid WindowFrame;
- background-color: Window;
+ background-color: #fff;
overflow: hidden;
+ -webkit-box-shadow: 0px 1px 1px #A7A7A7;
+ -moz-box-shadow: 0px 1px 1px #BFBFBF;
+ box-shadow: 0px 1px 1px #BFBFBF;
}
.acResults ul {
@@ -23,7 +26,7 @@
display: block;
width: 100%;
font: menu;
- font-size: 12px;
+ font-size: 14px;
overflow: hidden;
}
diff --git a/askbot/skins/default/media/style/lib_style.less b/askbot/skins/default/media/style/lib_style.less
new file mode 100644
index 00000000..4f2bad79
--- /dev/null
+++ b/askbot/skins/default/media/style/lib_style.less
@@ -0,0 +1,55 @@
+/* General Predifined classes, read more in lesscss.org */
+
+/* Variables for Colors*/
+
+@header-color:#16160f;
+@link:#1b79bd;
+@question-link:#464646;
+@button-label:#4a757f;
+@section-title:#7ea9b3;
+@info-text:#707070;
+@info-text-dark:#525252;
+
+/* Variables for fonts*/
+
+@body-font:Arial; /* "Trebuchet MS", sans-serif;*/
+@sort-font:Georgia, serif;
+@main-font:'Yanone Kaffeesatz', sans-serif;
+@secondary-font:Arial;
+
+/* Receive exactly positions for background Sprite */
+
+.sprites(@hor,@vert,@back:url(../images/sprites.png)){
+ background:@hor @vert @back no-repeat;
+}
+
+/* CSS3 Elements */
+
+.box-shadow (@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){
+ -webkit-box-shadow: @arguments;
+ -moz-box-shadow: @arguments;
+ box-shadow: @arguments;
+}
+
+.text-shadow(@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){
+ text-shadow: @arguments;
+ -moz-text-shadow: @arguments;
+ -webkit-text-shadow: @arguments;
+}
+
+.rounded-corners(@radio: 5px){
+ border-radius: @radio;
+ -ms-border-radius: @radio;
+ -moz-border-radius: @radio;
+ -webkit-border-radius: @radio;
+ -khtml-border-radius: @radio;
+}
+
+.rounded-corners-top(@radio:5px){
+ border-top-right-radius:@radio;
+ border-top-left-radius:@radio;
+ -moz-border-radius-topright:@radio;
+ -moz-border-radius-topleft:@radio;
+ -webkit-border-top-left-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 600cd31e..a1ac17d8 100644
--- a/askbot/skins/default/media/style/style.css
+++ b/askbot/skins/default/media/style/style.css
@@ -1,1605 +1,2505 @@
@import url(jquery.autocomplete.css);
-
+/* General Predifined classes, read more in lesscss.org */
+/* Variables for Colors*/
+/* Variables for fonts*/
+/* "Trebuchet MS", sans-serif;*/
+/* 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: sans-serif;
+ 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;
+ 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;
+ vertical-align: middle;
}
-
hr {
- border: none;
- border-top: 1px dashed #ccccce;
+ border: none;
+ border-top: 1px dashed #ccccce;
}
-
input, select {
- vertical-align: middle;
- font-family: Trebuchet MS, "segoe ui", Helvetica, "Microsoft YaHei", 宋 体, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif;
+ vertical-align: middle;
+ font-family: Trebuchet MS, "segoe ui", Helvetica, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif;
+ margin-left: 0px;
}
-
p {
- font-size: 14px;
- line-height: 140%;
- margin-bottom: 6px;
- padding-left: 5px;
+ font-size: 14px;
+ line-height: 140%;
+ margin-bottom: 6px;
}
-
a {
- color: #333333;
- text-decoration: none;
- cursor: pointer;
-}
-
-/* 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: 160%;
- padding: 10px 0 5px 5px;
+ color: #1b79bd;
+ text-decoration: none;
+ cursor: pointer;
}
-
-.users-page h1, .tags-page h1 {
- float: left;
-}
-
-.main-page h1 {
- margin-right: 5px;
-}
-
h2 {
- font-size: 140%;
- padding: 3px 0 3px 5px;
+ font-size: 21px;
+ padding: 3px 0 3px 5px;
}
-
h3 {
- font-size: 120%;
- padding: 3px 0 3px 5px;
+ font-size: 19px;
+ padding: 3px 0 3px 5px;
}
-
ul {
- list-style: disc;
- margin-left: 20px;
- padding-left: 0px;
- margin-bottom: 1em;
+ 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;
+ list-style: decimal;
+ margin-left: 30px;
+ margin-bottom: 1em;
+ padding-left: 0px;
}
-
td ul {
- vertical-align: middle;
+ vertical-align: middle;
}
-
li input {
- margin: 3px 3px 4px 3px;
+ 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;
-}
-
-.content-wrapper {/* wrapper positioning class */
- width: 960px;
- margin: auto;
- position:relative;
-}
-
-#ab-header {
- margin-top: 0px;
- background: #FFF;
-}
+ font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace;
+ font-size: 100%;
+ margin-bottom: 10px;
+ /*overflow: auto;*/
-#ab-header .content-wrapper {
- height: 90px;/* same as logo height */
-}
-
-#CALeft {
- width: 710px;
- float: left;
- position: relative;
- padding: 0 5px 10px 5px;
-}
+ background-color: #F5F5F5;
+ padding-left: 5px;
+ padding-top: 5px;
+ /*width: 671px;*/
-#CARight {
- width: 230px;
- float: right;
- padding: 0 5px 10px 5px;
-}
-
-#CAFull {
- float: left;
- padding: 0 5px 10px 5px;
- width: 950px;
+ padding-bottom: 20px ! ie7;
}
-
-#ground {
- width: 100%;
- clear: both;
- border-top: 1px solid #000;
- padding: 6px 0 0 0;
- text-align: center;
- background: #777;
-}
-
-#ground p {
- margin-bottom:0;
+code {
+ font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace;
+ font-size: 100%;
}
-
-#ab-logo {
- padding: 0px 0px 0px 10px;
- position: absolute;
- bottom: 0;
- left: 0;
- height: 90px;
- width: 70px;
+blockquote {
+ margin-bottom: 10px;
+ margin-right: 15px;
+ padding: 10px 0px 1px 10px;
+ background-color: #F5F5F5;
}
-
-img.license-logo {
- margin: 6px 0 10px 0;
+/* http://pathfindersoftware.com/2007/09/developers-note-2/ */
+* html .clearfix, * html .paginator {
+ height: 1;
+ overflow: visible;
}
-
-#ab-meta-nav,
-#ab-main-nav {
- position: absolute;
- left: 100px;
++ html .clearfix, + html .paginator {
+ min-height: 1%;
}
-
-#ab-meta-nav {
- top: 0px;
- height: 20px;
- padding: 3px;
- margin: 0;
+.clearfix:after, .paginator:after {
+ clear: both;
+ content: ".";
+ display: block;
+ height: 0;
+ visibility: hidden;
}
-
-#ab-meta-nav a {
- height: 35px;
- text-align: right;
- margin-left: 20px;
- text-decoration: underline;
- color: #555555;
+body.user-messages {
+ margin-top: 2.4em;
}
-
-#ab-meta-nav a:first-child {
- margin-left: 0;
+.badges a {
+ color: #763333;
+ text-decoration: underline;
}
-
-#ab-meta-nav a#ab-responses {
- margin-left: 3px;
+a:hover {
+ text-decoration: underline;
}
-#ab-meta-nav a img {
- vertical-align:middle;
- margin-bottom:2px;
+.badge-context-toggle.active {
+ cursor: pointer;
+ text-decoration: underline;
}
-
-#ab-meta-nav .user-info a {
- margin: 0;
- text-decoration: none;
+h1 {
+ font-size: 24px;
+ padding: 10px 0 5px 0px;
}
-
-#ab-main-nav {
- bottom: 0;
+/* ----- Extra space above for messages ----- */
+body.user-messages {
+ margin-top: 2.4em;
}
-
-#ab-main-nav a {
- color: #333333;
- background-color: #fff0e0;
- border: 1px solid #888888;
- border-bottom: none;
- padding: 0px 12px 3px 12px;
- height: 25px;
- line-height: 30px;
- margin-right: 10px;
- font-size: 18px;
- font-weight: 100;
- text-decoration: none;
- display: block;
- float: left;
+/* ----- Custom positions ----- */
+.left {
+ float: left;
}
-
-#ab-main-nav a:hover {
- text-decoration: underline;
+.right {
+ float: right;
}
-
-#ab-main-nav a.on {
- height: 24px;
- line-height: 28px;
- border-bottom: 1px solid #a40000;
- border-right: 1px solid #820000;
- border-top: 1px solid #d40000;
- border-left: 1px solid #d40000; /*background:#A31E39; */
- background: #b03a48;
- color: #FFF;
- font-weight: 800;
- text-decoration: none
+.clean {
+ clear: both;
}
-
-#ab-main-nav a.special {
- font-size: 18px;
- color: #B02B2C;
- font-weight: bold;
- text-decoration: none;
+.center {
+ margin: 0 auto;
+ padding: 0;
}
-
-#ab-main-nav a.special:hover {
- text-decoration: underline;
+/* ----- 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: '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, check blocks/header.html ----- */
+#header {
+ margin-top: 0px;
+ background: #16160f;
+ font-family: 'Yanone Kaffeesatz', 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;
+ position: absolute;
+ bottom: 0;
+ right: 0px;
+ 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;
+}
+#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;
+}
+#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: '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: #cccccc;/*888a85; /*#e9b96e;*/
- width:700px;
- border: 1px solid #aaaaaa;
- padding: 4px 5px 4px 4px;
-}
-
-#searchBar .searchInput, #searchBar .searchInputCancelable {
- font-size: 24px;
- line-height: 24px;
- height: 31px;
- margin: 0px 4px 0px 0px;
- padding: 5px 0 0 5px;
+ /* Main search form , check widgets/search_bar.html */
+
+ 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,
+#searchBar .searchInputAuth,
+#searchBar .searchInputCancelableAuth {
+ 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, #searchBar .searchInputCancelable {
- width: 607px;
+ width: 352px;
}
-
#searchBar .searchInputCancelable {
- width: 564px;
-}
-
-#searchBar .searchBtn, #searchBar .cancelSearchBtn {
- font-size: 20px;
- color: #666;
- background-color: #eee;
- height: 40px;
- border: 1px solid #aaa;
- line-height: 22px;
- text-align: center;
- padding-bottom: 4px;
-}
-
-#searchBar .searchBtn {
- margin: 0px;
- width: 78px;
-}
-
-#searchBar .cancelSearchBtn {
- width: 40px;
- margin: 0px 3px 0px 0px;
+ width: 317px;
}
-
-#askFormBar {
- display:inline-block;
- background-color: #e3e3e3;/*888a85; /*#e9b96e;*/
- border: 1px solid #aaaaaa;
- padding: 4px 7px 5px 5px;
-}
-#askFormBar p {
- width: 685px;
- margin:0 0 5px 0;
-}
-#askFormBar .questionTitleInput {
- font-size: 24px;
- line-height: 24px;
- height: 36px;
- width: 680px;
- margin: 0px;
- padding: 5px 0 0 5px;
-}
-
-#question-list {
- float: left;
- position: relative;
- background-color: #FFF;
- padding: 0;
- width: 100%;
-}
-
-.ask-page div#question-list {
- float: none;
- width: 706px;
-}
-.ask-page div#question-list h2 {
- font-size: 14px;
- padding-bottom: 0;
-}
-.ask-page div#question-list span {
- padding: 3px 7px;
- margin-right: 5px;
- background: #ccc;
+#searchBar .searchInputAuth {
+ width: 340px;
}
+#searchBar .searchInputCancelableAuth {
+ width: 310px;
+ /*FIXME byron */
-/* 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;
+#searchBar .logoutsearch {
+ width: 337px;
}
-
-ul.tags,
-.boxC 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;
+#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;
}
-
-.wildcard-tags {
- clear: both;
+#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;
+}
+#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: #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;
+}
+/* ----- 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;
+}
+.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;
+}
+.box .contributorback {
+ background: #eceeeb url(../images/contributorsback.png) no-repeat center left;
+}
+.box label {
+ color: #707070;
+ font-size: 15px;
+ display: block;
+ float: right;
+ width: 177px;
+ font-family: 'Yanone Kaffeesatz', sans-serif;
+}
+.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;
}
-
-ul.tags.marked-tags li,
-.wildcard-tags ul.tags li {
- margin-bottom: 5px;
+.questions-related {
+ word-wrap: break-word;
}
-
-#tagSelector div.inputs {
- clear: both;
- float: none;
+.questions-related p {
+ line-height: 20px;
+ padding: 4px 0px 4px 0px;
+ font-size: 16px;
+ font-weight: normal;
+ border-bottom: #cccccc 1px solid;
}
-
-.tags-page ul.tags li,
-ul#ab-user-tags li {
- width: 160px;
+.questions-related a {
+ font-size: 13px;
}
-
-ul#related-tags li {
- margin: 0 5px 3px 0;
- float: left;
- clear: left;
+/* tips and markdown help are widgets for ask template */
+#tips li {
+ color: #707070;
+ font-size: 13px;
+ list-style-image: url(../images/tips.png);
}
-
-/* .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: 18px;
- margin: 0 5px 0 0;
- padding: 0;
+#tips a {
+ font-size: 16px;
}
-
-.tag-right {
- background: url(../images/tag-left.png) no-repeat left center;
- border: none;
- display: block;
- float: left;
- height: 18px;
- line-height: 20px;
- font-weight: normal;
- font-size: 11px;
- padding: 0px 7px 0px 15px;
- text-decoration: none;
- text-align: center;
- white-space: nowrap;
- vertical-align: middle;
+#markdownHelp li {
+ color: #707070;
+ font-size: 13px;
}
-
-.deletable-tag {
- margin-right: 3px;
- white-space: nowrap;
+#markdownHelp a {
+ font-size: 16px;
}
-
-.deletable-tag .tag-right {
- padding-right: 0px;
- float: left;
+/* ----- 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;
}
-.deletable-tag.tag-left {
- padding-right: 3px;
+.tabBar h2 {
+ float: left;
}
-
-.tags a.tag-right,
-.tags span.tag-right {
- color: #333;
- text-decoration: none;
+.tabsA, .tabsC {
+ float: right;
+ position: relative;
+ display: block;
+ height: 20px;
}
-
-span.delete-icon {
- padding-left: 13px;
- vertical-align: bottom;
- background: url(../images/close-small-dark.png) no-repeat;
- cursor: default;
+/* 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;
}
-span.delete-icon:hover {
- background: url(../images/close-small-hover.png) no-repeat;
+.tabsA .label, .tabsC .label {
+ float: left;
+ color: #646464;
+ margin-top: 4px;
+ margin-right: 5px;
}
-
-.tags span.delete-icon {
- float: left;
- height: 15px;
- margin: 2px 0 0 1px;
- display: block;
+.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;
+}
+.rss {
+ float: right;
+ font-size: 16px;
+ color: #f57900;
+ margin: 5px 0px 3px 7px;
+ width: 52px;
+ padding-left: 16px;
+ 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: 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;
}
-
-.tag-number {
- font-weight: 700;
- display: block;
- float: left;
- font-family: sans-serif;
+.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;
}
-
-.badges .tag-number {
- float: none;
- display: inline;
- padding-right: 15px;
+.search-tips a {
+ text-decoration: underline;
+ color: #1b79bd;
}
-
-ul#search-tags {
- padding-top: 3px;
+/* ----- 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: 5px 2px 5px 2px;
- border-top: 1px dashed #ccccce;
- overflow: hidden;
- width: 702px;
- float: left;
+ 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: 16px;
- font-family: "Trebuchet MS", "segoe ui", arial, sans-serif;
+ 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 .userinfo .relativetime,
-.short-summary .userinfo a,
-.short-summary span.anonymous {
- font-size: 11px;
- clear:both;
- font-weight: normal;
- color: #555;
+.short-summary a {
+ color: #464646;
}
-
-
.short-summary .userinfo {
- text-align:center;
- line-height:16px;
+ 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: 2px 0 0 5px;
+ float: right;
+ margin: 4px 0 0 5px;
+ font-family: 'Yanone Kaffeesatz', sans-serif;
}
-
.short-summary .counts .item-count {
- border:1px solid #cccccc;
- -moz-border-radius:5px;
- -webkit-border-radius:5px;
- padding:0px 5px 0px 5px;
- font-size: 17px;
- font-weight: 800;
+ 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
-{
- font-size: 12px;
- line-height:14px;
- color: #555;
+.short-summary .counts .favorites div {
+ margin-top: 3px;
+ font-size: 14px;
+ line-height: 14px;
+ color: #646464;
}
-
.short-summary .tags {
- margin-top: 0;
+ margin-top: 0;
}
-
-.no-votes .item-count {
- background: white;
- color: gray;
-}
-.some-votes .item-count {
- background: #a3d0ff;
- color: #4a4a4a;
-}
-.no-answers .item-count {
- background: #b63333;
- color: yellow;
-}
-.no-favorites .item-count {
- background: #b63333;
- color: yellow;
-}
-.some-answers .item-count {
- background: #ffed9c;
- color: #a4a4a4;
-}
-.some-favorites .item-count {
- background:#338333;
- color:#d0f5a9;
-}
-.accepted .item-count {
- background:#338333;
- color:#d0f5a9;
-}
-.no-views .item-count {
- background: gray;
- color: white;
-}
-.some-views .item-count {
- background: #ff8c8c;
- color: #4a4a4a;
-}
-
.short-summary .votes,
.short-summary .answers,
.short-summary .favorites,
.short-summary .views {
- text-align: center;
- margin: 0 3px;
- padding: 4px 2px 0px 2px;
- width: 46px;
- float: right;
- -moz-border-radius: 5px;
- -khtml-border-radius: 5px;
- -webkit-border-radius: 5px;
+ 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 {
- width: 36px;
- padding-right: 0;
+ background: url(../images/view-background.png) repeat-x;
}
-
-.short-summary h2 {
- padding-left: 0;
+.short-summary .no-votes .item-count {
+ color: #b1b5b6;
}
-
-#question-table,
-.answer-table {
- margin: 2px 0 10px 0;
- border-spacing: 0px;
+.short-summary .some-votes .item-count {
+ color: #4a757f;
}
-
-.answer-table {
- border-bottom: 1px solid #bbb;
- clear: both;
+.short-summary .no-answers .item-count {
+ color: #b1b5b6;
}
-
-.evenMore {
- font-size: 14px;
- font-weight: 800;
+.short-summary .some-answers .item-count {
+ color: #eab243;
}
-
-.evenMore a {
- text-decoration: underline;
+.short-summary .no-views .item-count {
+ color: #b1b5b6;
}
-
-.boxC {
- background: white /*#cacdc6; /*f9f7ed;*/
- padding: 10px 10px 10px 15px;
- margin-bottom: 12px;
+.short-summary .some-views .item-count {
+ color: #d33f00;
}
-
-.boxC p {
- margin-bottom: 4px;
+.short-summary .accepted .item-count {
+ background: url(../images/accept.png) no-repeat top right;
+ display: block;
+ text-align: center;
+ width: 40px;
+ color: #eab243;
}
-
-.boxC p.info-box-follow-up-links {
- text-align: right;
- margin: 0;
+.short-summary .some-favorites .item-count {
+ background: #338333;
+ color: #d0f5a9;
}
-
-.boxC h2,
-.boxC h3 {
- padding-left: 0;
+.short-summary .no-favorites .item-count {
+ background: #eab243;
+ color: yellow;
}
-
-.boxC label {
- color: #333;
+/* ----- 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 {
- clear:both;
- border-top: 1px solid #777;
- margin-top: 10px;
- margin-bottom: 16px;
+ margin-top: 10px;
+ margin-bottom: 16px;
}
-
.pagesize {
- margin-top: 10px;
- margin-bottom: 16px;
- float: right;
+ margin-top: 10px;
+ margin-bottom: 16px;
+ float: right;
}
-
-/** PAGINATOR **/
.paginator {
- padding: 5px 0 10px 0;
- font: normal 12px sans-serif;
+ padding: 5px 0 10px 0;
+ font-size: 13px;
}
-
-.paginator .prev a, .paginator .prev a:visited,
-.paginator .next a, .paginator .next a:visited {
- border: 1px solid #fff;
- background-color: #fff;
- color: #777;
- padding: 2px 4px 3px 4px;
- font: bold 100% sans-serif;
+.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;
+ margin-right: .5em;
}
-
.paginator .next {
- margin-left: .5em;
+ margin-left: .5em;
}
-
.paginator .page a, .paginator .page a:visited, .paginator .curr {
- padding: .25em;
- font: normal .875em verdana;
- border: 1px solid #ccc;
- background-color: #fff;
- margin: 0em .25em;
- color: #777;
+ padding: .25em;
+ background-color: #fff;
+ margin: 0em .25em;
+ color: #ff;
}
-
.paginator .curr {
- background-color: #777;
- color: #fff;
- border: 1px solid #777;
- font-weight: bold;
+ 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: #fff;
- background-color: #777;
- border: 1px solid #777;
- text-decoration: none;
+ color: #8C8C8C;
+ background-color: #E1E1E1;
+ text-decoration: none;
}
-
.paginator .text {
- color: #777;
- padding: .3em;
- font: bold 100% sans-serif;
-}
-
-.paginator-container-left {
- padding: 5px 0 10px 0;
-}
-
-p.rss {
- float: right;
- font-size: 12px;
- color: #666;
- margin: 0 2px 0 0;
-}
-
-p.rss a {
- padding-left: 16px;
- background: url(../images/feed-icon-small.png) no-repeat;
-}
-
-.question-page p.rss {
- float:none;
- clear:both;
- padding: 3px 0 0 1px;
- font-size: 14px;
-}
-
-.question-page p.rss a {
- padding-left: 18px;
- vertical-align: top;
-}
-
-/* badges */
-a.medal {
- font-size: 14px;
- line-height: 250%;
- font-weight: 800;
- 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;
-}
-
-/*Tabs*/
-.tabBar {
- background-color: #FFF;
- border-bottom: 1px solid white;
- height: 30px;
- width: 100%;
- clear: both;
- margin-bottom: 3px;
- margin-top: 3px;
+ color: #777;
+ padding: .3em;
}
-
-.tabBar h2 {
- float: left;
+.paginator .paginator-container-left {
+ padding: 5px 0 10px 0;
}
-
-.tabsA, .tabsC {
- background-color: #FFF;
- float: right;
- position: relative;
- display: block;
- font-weight: bold;
- height: 20px;
+/* ----- 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;
}
-
-/* tabsA - used for sorting */
-.tabsA { float: right; }
-.tabsC { float: left; }
-
-.tabsA a.on, .tabsC a.on, .tabsA a:hover, .tabsC a:hover {
- background: #fff;
- color: #a40000;
- border-top: 1px solid #babdb6;
- border-left: 1px solid #babdb6;
- border-right: 1px solid #888a85;
- border-bottom: 1px solid #888a85;
- height: 24px;
- line-height: 26px;
- margin-top: 3px;
+.tag-size-2 {
+ font-size: 13px;
}
-
-.tabsA a.rev.on, tabsA a.rev.on:hover {
- padding: 0px 2px 0px 7px;
+.tag-size-3 {
+ font-size: 14px;
}
-
-.tabsA a, .tabsC a{
- background: #f9f7eb;
- border-top: 1px solid #eeeeec;
- border-left: 1px solid #eeeeec;
- border-right: 1px solid #a9aca5;
- border-bottom: 1px solid #888a85;
- color: #888a85;
- display: block;
- float: left;
- height: 20px;
- line-height: 22px;
- margin: 5px 0 0 4px;
- padding: 0 2px;
- text-decoration: none;
- font-size: 12.5px;
+.tag-size-4 {
+ font-size: 15px;
}
-
-.tabsA .label, .tabsC .label {
- float: left;
- font-weight: bold;
- color: #777;
- margin: 8px 0 0 0px;
+.tag-size-5 {
+ font-size: 16px;
}
-
-.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;
+.tag-size-6 {
+ font-size: 17px;
}
-
-.questions-related {
- font-weight: 700;
- word-wrap: break-word;
+.tag-size-7 {
+ font-size: 18px;
}
-
-.questions-related p {
- line-height: 20px;
- margin-bottom: 10px;
- font-size: 100%;
+.tag-size-8 {
+ font-size: 19px;
}
-
-.question-status {
- margin-top: 10px;
- padding: 20px;
- background-color: #F5F5F5;
- text-align: center;
+.tag-size-9 {
+ font-size: 20px;
}
-
-.question-status h3 {
- font-size: 125%;
+.tag-size-10 {
+ font-size: 21px;
}
-.question-body, .answer-body {
- min-height: 39px;
- line-height: 20px;
- overflow: auto;
- width: 660px;
+ul.tags, ul.tags.marked-tags, ul#related-tags {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ line-height: 170%;
+ display: block;
}
-.question-body IMG, .answer-body IMG {
- max-width: 600px;
+ul.tags li {
+ float: left;
+ display: block;
+ margin: 0 5px 0 0;
+ padding: 0;
+ height: 20px;
}
-
-.vote-buttons {
- float: left;
- text-align: center;
- padding-top: 2px;
+.wildcard-tags {
+ clear: both;
}
-
-.vote-buttons IMG {
- cursor: pointer;
+ul.tags.marked-tags li, .wildcard-tags ul.tags li {
+ margin-bottom: 5px;
}
-
-.vote-buttons .button{
- -moz-border-radius: 10px;
- margin-top: 20px;
- border-radius: 10px;
- height: 20px;
- width: 80px;
- border-style: solid;
- border-width: 1px;
- padding: 8px;
- float:left;
+#tagSelector div.inputs {
+ clear: both;
+ float: none;
+ margin-bottom: 10px;
}
-
-.vote-buttons .followed{
- font-color: #000;
- font-style:normal;
- background: #cccccc;
+.tags-page ul.tags li, ul#ab-user-tags li {
+ width: 160px;
+ margin: 5px;
}
-
-.vote-buttons .followed div{
- font-weight: normal;
+ul#related-tags li {
+ margin: 0 5px 5px 0;
+ float: left;
+ clear: left;
}
-
-.vote-buttons .followed div.unfollow{
- display:none;
+/* .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;
+ margin: 0 5px 0 0;
+ padding: 0;
}
-
-.vote-buttons .followed:hover{
- color: #fff;
- background: #8b0000;
+.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;
}
-
-.vote-buttons .followed:hover div{
- display:none;
+.deletable-tag {
+ margin-right: 3px;
+ white-space: nowrap;
}
-
-.vote-buttons .followed:hover div.unfollow{
- display:inline;
- font-weight: bold;
+.deletable-tag .tag-right {
+ padding-right: 0px;
+ float: left;
}
-
-.vote-buttons .follow{
- background: #cccccc;
+.deletable-tag.tag-left {
+ padding-right: 0px;
}
-
-.vote-buttons .follow:hover{
- background: #234f32;
- color: #fff;
- font-weight: bold;
+.tags a.tag-right, .tags span.tag-right {
+ color: #585858;
+ text-decoration: none;
}
-
-.vote-number {
- font-family: Arial;
- padding: 0px 0 3px 0;
- font-size: 140%;
- font-weight: bold;
- color: #777;
+.tags a:hover {
+ color: #1A1A1A;
}
-
-.vote-buttons .notify-sidebar {
- text-align: left;
+.users-page h1, .tags-page h1 {
+ float: left;
}
-.vote-buttons .notify-sidebar label {
- vertical-align: top;
+.main-page h1 {
+ margin-right: 5px;
}
-
-.question-img-upvote:hover {
- background: url(../images/vote-arrow-up-on.png)
+span.delete-icon {
+ padding-left: 13px;
+ vertical-align: bottom;
+ background: url(../images/close-small-dark.png) bottom no-repeat;
+ cursor: default;
}
-
-.question-img-downvote:hover {
- background: url(../images/vote-arrow-down-on.png)
+span.delete-icon:hover {
+ background: url(../images/close-small-dark.png) top no-repeat;
}
-
-.question-img-favorite:hover {
- background: url(../images/vote-favorite-on.png)
+.tags span.delete-icon {
+ float: left;
+ height: 20px;
+ width: 8px;
+ margin: 0px 0 0 10px;
+ display: block;
}
-
-.favorite-number {
- padding: 5px 0 0 10px;
- font-size: 100%;
- font-family: Arial;
- font-weight: bold;
- color: #777;
- text-align: left;
+.tag-number {
+ font-weight: normal;
+ float: left;
+ font-size: 16px;
+ color: #5d5d5d;
}
-
-.notify-me {
- float: left;
+.badges .tag-number {
+ float: none;
+ display: inline;
+ padding-right: 15px;
}
-
-.offensive-flag a {
- color: #777;
- padding: 3px;
- cursor: pointer;
+/* ----- Ask and Edit Question Form template----- */
+.section-title {
+ color: #7ea9b3;
+ font-family: 'Yanone Kaffeesatz', sans-serif;
+ font-weight: bold;
+ font-size: 24px;
}
-
-.offensive-flag a:hover {
- background-color: #777;
- text-decoration: none;
- color: #fff;
+.ask-body {
+ padding-right: 10px;
}
-
-.linksopt a {
- color: #777;
- padding: 3px;
- cursor: pointer;
+#fmask {
+ margin-bottom: 30px;
+ width: 100%;
}
-
-.linksopt a:hover {
- background-color: #777;
- text-decoration: none;
- color: #fff;
+#askFormBar {
+ display: inline-block;
+ padding: 4px 7px 5px 0px;
+ margin-top: 0px;
}
-
-.post-controls a {
- color: #777;
- padding: 3px;
- cursor: pointer;
- border: none;
- background: none;
- text-decoration: none;
+#askFormBar p {
+ margin: 0 0 5px 0;
+ font-size: 14px;
+ color: #525252;
+ line-height: 1.4;
}
-
-.post-controls a:hover {
- background-color: #777;
- color: #fff;
+#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;
}
-
-.post-controls .sep {
- color: #ccc;
+.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;
}
-
-.comments {
- font-size: 12px;
- width: 650px;
- clear: both;
+#editor {
+ /*adjustment for editor preview*/
+
+ 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;
}
-
-.comments .comment {
- border-top: 1px dotted #cccccc;
- margin: 0;
- overflow: auto;
+#id_title {
+ width: 100%;
}
-
-.comments .content {
- margin-bottom: 7px;
+.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;
}
-
-.comments div.comment {
- min-height: 25px;
+.wmd-preview pre {
+ background-color: #E7F1F8;
}
-
-.comments div.comment:hover {
- background-color: #eee;
+.wmd-preview blockquote {
+ background-color: #eee;
}
-
-div.comment .comment-votes {
- float: left;
- width: 37px;
- line-height: 130%;
- padding: 6px 5px 6px 3px;
+.wmd-preview IMG {
+ max-width: 600px;
}
+.preview-toggle {
+ width: 100%;
+ color: #b6a475;
+ /*letter-spacing:1px;*/
-div.comment .comment-body {
- line-height: 140%;
- margin: 3px 26px 0 46px;
- padding: 5px 3px;
- color: #666;
+ text-align: left;
}
-
-div.comment .comment-body p{
- font-size:inherit;
- margin-bottom: 3px;
- padding: 0;
+.preview-toggle span:hover {
+ cursor: pointer;
}
-
-div.comment .comment-delete {
- float: right;
- width: 14px;
- line-height: 130%;
- padding: 8px 6px;
+.after-editor {
+ margin-top: 10px;
}
-
-div.comment .upvote {
- margin: 0px;
- padding-right: 17px;
- padding-top: 2px;
- text-align: right;
- height: 20px;
- font-size: 13px;
- font-weight: bold;
- color: #777;
+.checkbox {
+ margin-left: 5px;
+ font-weight: normal;
+ cursor: help;
}
-
-div.comment .upvote.upvoted {
- color: #d64000;
+.question-options {
+ margin-top: 1px;
+ color: #666;
+ line-height: 13px;
+ margin-bottom: 5px;
}
-
-div.comment .upvote.hover {
- background: url(../images/go-up-grey.png) no-repeat;
- background-position: right 1px;
+.question-options label {
+ vertical-align: text-bottom;
}
-
-div.comment .upvote:hover {
- background: url(../images/go-up-orange.png) no-repeat;
- background-position: right 1px;
+.edit-content-html {
+ border-top: 1px dotted #D8D2A9;
+ border-bottom: 1px dotted #D8D2A9;
+ margin: 5px 0 5px 0;
+}
+.edit-question-page, #fmedit {
+ color: #525252;
+}
+.edit-question-page #id_revision, #fmedit #id_revision {
+ font-size: 14px;
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+.edit-question-page #id_title, #fmedit #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 {
+ border: #cce6ec 3px solid;
+ height: 25px;
+ padding-left: 5px;
+ width: 395px;
+ font-size: 14px;
+}
+.edit-question-page .title-desc, #fmedit .title-desc {
+ margin-bottom: 10px;
+}
+/* ----- Question template ----- */
+.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;
}
-
-.comments div.controls {
- clear: both;
- background: url(../images/gray-up-arrow-h18px.png) no-repeat;
- width: 100%;
- padding-left: 12px;
- margin: 3px 0 20px 5px;
+.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;
}
-
-.comments form.post-comments {
- width: 560px;
- margin: 3px 30px 4px 45px;
+.question-page p.rss a {
+ font-family: 'Yanone Kaffeesatz', sans-serif;
+ vertical-align: top;
+}
+.question-page .question-content {
+ float: right;
+ width: 690px;
+ 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 0px 0;
+ border-spacing: 0px;
+ width: 680px;
+ padding-right: 3px;
+}
+.question-page .answer-table {
+ margin-top: 0px;
+ border-bottom: 1px solid #D4D4D4;
+ float: left;
+}
+.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;
+}
+.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;
+}
+.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 .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 30px 4px 5px;
+}
+.question-page .comments textarea {
+ height: 42px;
+ width: 100%;
+ margin: 12px 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-size: 12px;
+ width: 95px;
+ font-weight: bold;
+ height: 24px;
+ 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;
+ float: left;
+}
+.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;
+ margin: 0;
+ margin-top: 8px;
+ padding-bottom: 4px;
+ overflow: auto;
+ font-family: Arial;
+ font-size: 11px;
+ min-height: 25px;
+ background: 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 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: 3px 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;
+}
+.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;
+}
+.question-page .answer .post-update-info a {
+ color: #444444;
+}
+.question-page .accepted-answer .comments {
+ background-color: #f1f6d4;
+}
+.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;
}
-
-.comments textarea {
- display: block;
- height: 42px;
- width: 572px;
- margin: 6px 0 5px 1px;
- font-family: sans-serif;
- outline: none;
- overflow:auto;
- font-size: 12px;
- line-height: 140%;
- padding-left:2px;
+.question-page #fmanswer p {
+ font-size: 13px;
+ line-height: 1.3;
}
-
-.comments input {
- margin-left: 10px;
- margin-top: 1px;
- vertical-align: top;
- width: 100px;
+.question-page #fmanswer h2 {
+ font-family: 'Yanone Kaffeesatz', sans-serif;
+ color: #7ea9b3;
+ font-size: 24px;
}
-
-.comments .counter {
- display: inline-block;
- width: 245px;
- vertical-align: top;
+.question-page #fmanswer label {
+ font-size: 13px;
}
-
-.comments .controls a {
- color: #888888;
- padding: 0 3px 2px;
+.question-page .message {
+ padding: 5px;
+ margin: 0px 0 10px 0;
}
-
-.comments .controls a:hover {
- background-color: #777777;
- color: white;
- text-decoration: none;
+.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);
}
-
-.comments .help-text{
- float: right;
- text-align:right;
- color: gray;
- margin-bottom: 0px;
- margin-top: 0px;
- line-height: 50%;
+.facebook-share.icon {
+ background-position: -26px 0px;
}
-
-span.text-counter {
- margin-right: 20px;
+.identica-share.icon {
+ background-position: -78px 0px;
}
-
-span.form-error {
- color: #990000;
- font-weight: normal;
- margin-left: 5px;
+.twitter-share.icon {
+ margin-top: 10px;
+ background-position: 0px 0px;
}
-
-p.form-item {
- margin: 0px;
+.linkedin-share.icon {
+ background-position: -52px 0px;
+}
+/* -----Content pages, Login, About, FAQ, Users----- */
+.openid-signin, .meta, .users-page {
+ font-size: 13px;
+ line-height: 1.3;
+ color: #525252;
+}
+.openid-signin p, .meta p, .users-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 {
+ color: #525252;
+ padding-left: 0px;
+ font-size: 16px;
+}
+.openid-signin #id_email,
+.meta #id_email,
+.users-page #id_email,
+.openid-signin #id_name,
+.meta #id_name,
+.users-page #id_name,
+.openid-signin #id_username,
+.meta #id_username,
+.users-page #id_username,
+.openid-signin #id_password1,
+.meta #id_password1,
+.users-page #id_password1,
+.openid-signin #id_password2,
+.meta #id_password2,
+.users-page #id_password2 {
+ border: #cce6ec 3px solid;
+ height: 25px;
+ padding-left: 5px;
+ width: 395px;
+ font-size: 14px;
+}
+.openid-signin textarea, .meta textarea, .users-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 {
+ background: url(../images/small-button-blue.png) repeat-x top;
+ border: 0;
+ color: #4a757f;
+ font-weight: bold;
+ font-size: 16px;
+ height: 24px;
+ 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;
+}
+.openid-signin input.submit:hover, .meta input.submit:hover, .users-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 {
+ 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 {
+ 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,
+#email-input-fs input,
+#local_login_buttons input,
+#password-fs input,
+#openid-fs input {
+ 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: 12px;
+ height: 24px;
+ 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;
+}
+#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;
}
-
-div.comments {
- padding: 0;
+.openid-input {
+ background: url(../images/openid.gif) no-repeat;
+ padding-left: 15px;
+ cursor: pointer;
}
-
-.comments .button {
- color: black;
- font-size: 11px;
- background: #eeeeee;
- padding: 3px;
- 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;
}
-
-.comment a {
- background-color: inherit;
- color: blue;
- padding: 0;
+.openid-login-submit {
+ height: 40px;
+ width: 80px;
+ line-height: 40px;
+ cursor: pointer;
+ border: 1px solid #777;
+ font-weight: bold;
+ font-size: 120%;
+}
+/* People page */
+.tabBar-user {
+ width: 375px;
}
-
-.comment a.author, a.author:hover {
- background-color: inherit;
- color: blue;
- padding: 0;
+.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;
}
-
-.comment a.author:hover {
- text-decoration: underline;
+.user ul {
+ margin: 0;
+ list-style-type: none;
}
-
-.accepted-answer {
- background-color: #EBFFE6;
- border-bottom-color: #9BD59B;
+.user .thumb {
+ clear: both;
+ float: left;
+ margin-right: 4px;
+ display: inline;
}
-
-.accepted-answer .comments .button {
- background-color: #CCFFBF;
+/* tags page */
+.tabBar-tags {
+ width: 270px;
+ margin-bottom: 15px;
}
-
-.accepted-answer .comments {
- background-color: #CCFFBF;
+/* 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;
}
-
-.answered {
- background: #CCC;
- color: #999;
+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: 'Yanone Kaffeesatz', sans-serif;
}
-
-.answered-accepted {
- background: #CCC;
- color: #763333;
+.user-details {
+ font-size: 13px;
}
-
-.answered-by-owner {
- background: #E9E9FF;
+.user-details h3 {
+ font-size: 16px;
}
-
-.answered-by-owner .comments .button {
- background-color: #E6ECFF;
+.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;
}
-
-.answered-by-owner .comments {
- background-color: #E6ECFF;
+.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;
+ /*letter-spacing:0px*/
-.answered-accepted strong {
- color: #E1E818;
+ margin-top: 3px;
}
-
-.answer-img-accept:hover {
- background: url(../images/vote-accepted-on.png)
+.vote-count {
+ font-family: Arial;
+ font-size: 160%;
+ font-weight: 700;
+ color: #777;
}
-
-.deleted {
- background: #F4E7E7 none repeat scroll 0 0;
+.answer-summary {
+ display: block;
+ clear: both;
+ padding: 3px;
}
-
-
-.boxC ul {
- margin-left: 15px;
+.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;
}
-
-.boxC li {
- list-style-type: disc;
- font-size: 13px;
- line-height: 20px;
- margin-bottom: 10px;
+.karma-summary {
+ padding: 5px;
+ font-size: 13px;
}
-
-/* openid styles */
-.form-row {
- line-height: 25px;
+.karma-summary h3 {
+ text-align: center;
+ font-weight: bold;
+ padding: 5px;
}
-
-table.form-as-table {
- margin-top: 5px;
+.karma-diagram {
+ width: 477px;
+ height: 300px;
+ float: left;
+ margin-right: 10px;
}
-
-table.form-as-table ul {
- list-style-type: none;
- display: inline;
+.karma-details {
+ float: right;
+ width: 450px;
+ height: 250px;
+ overflow-y: auto;
+ word-wrap: break-word;
}
-
-table.form-as-table li {
- display: inline;
+.karma-details p {
+ margin-bottom: 10px;
}
-
-table.form-as-table td {
- text-align: right;
+.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;
}
-
-table.form-as-table th {
- text-align: left;
- font-weight: normal;
+.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;
}
-
-table.ab-subscr-form {
- width: 45em;
+.submit-row {
+ margin-bottom: 10px;
}
-
-table.ab-tag-filter-form {
- width: 45em;
+/*----- Revision pages ----- */
+.revision {
+ margin: 10px 0 10px 0;
+ font-size: 13px;
+ color: #525252;
}
-
-.submit-row {
- line-height: 30px;
- padding-top: 10px;
- display: block;
- clear: both;
+.revision p {
+ font-size: 13px;
+ line-height: 1.3;
+ color: #525252;
}
-
-.errors {
- line-height: 20px;
- color: red;
+.revision h3 {
+ font-family: 'Yanone Kaffeesatz', sans-serif;
+ font-size: 21px;
+ padding-left: 0px;
}
-
-.error {
- color: darkred;
- margin: 0;
- font-size: 10px;
+.revision .header {
+ background-color: #F5F5F5;
+ padding: 5px;
+ cursor: pointer;
}
-
-label.retag-error {
- color: darkred;
- padding-left: 5px;
- font-size: 10px;
+.revision .author {
+ background-color: #e9f3f5;
}
-
-.fieldset {
- border: none;
- margin-top: 10px;
- padding: 10px;
+.revision .summary {
+ padding: 5px 0 10px 0;
}
-
-.openid-input {
- background: url(../images/openid.gif) no-repeat;
- padding-left: 15px;
- cursor: pointer;
+.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;
}
-
-.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;
+.revision .answerbody {
+ padding: 10px 0 5px 10px;
}
-
-.openid-login-submit {
- height: 40px;
- width: 80px;
- line-height: 40px;
- cursor: pointer;
- border: 1px solid #777;
- font-weight: bold;
- font-size: 120%;
+.revision .revision-mark {
+ width: 150px;
+ text-align: left;
+ display: inline-block;
+ font-size: 11px;
+ overflow: hidden;
}
-
-span.form-error {
- color: #990000;
- font-size: 90%;
- font-weight: normal;
- margin-left: 5px;
+.revision .revision-mark .gravatar {
+ float: left;
+ margin-right: 4px;
+ padding-top: 5px;
}
-
-.title-desc {
- color: #666666;
- font-size: 90%;
+.revision .revision-number {
+ font-size: 300%;
+ font-weight: bold;
+ font-family: sans-serif;
}
-
-/*adjustment for editor preview*/
-#editor {
- font-size: 100%;
- min-height: 200px;
- line-height: 18px;
- width: 702px;
- margin:0;
+del, del .post-tag {
+ color: #C34719;
}
-
-#id_title {
- width: 100%;
+ins .post-tag, ins p, ins {
+ background-color: #E6F0A2;
}
-
-.wmd-preview {
- margin: 3px 0 5px 0;
- padding: 6px;
- width: 691px;
- background-color: #F5F5F5;
- min-height: 20px;
- overflow: auto;
+/* ----- 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;
}
-
-.wmd-preview pre {
- background-color: #E7F1F8;
-
+.vote-notification a {
+ color: #fb7321;
+ text-decoration: underline;
+ font-weight: bold;
}
-
-.wmd-preview blockquote {
- background-color: #eee;
+/* ----- 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: 'Yanone Kaffeesatz', sans-serif;
}
-
-.wmd-preview IMG {
- max-width: 600px;
+#ground p {
+ margin-bottom: 0;
}
-
-.preview-toggle {
- width: 100%;
- color: #666; /*letter-spacing:1px;*/
- text-align: left;
+.footer-links {
+ color: #EEE;
+ text-align: left;
+ width: 500px;
+ float: left;
}
-
-.preview-toggle span:hover {
- cursor: pointer;
+.footer-links a {
+ color: #e7e8a8;
}
-
-.after-editor {
- margin-top: 10px;
+.powered-link {
+ width: 500px;
+ float: left;
+ text-align: left;
}
-
-.checkbox {
- margin-left:5px;
- font-weight:normal;
- cursor:help
+.powered-link a {
+ color: #8ebcc7;
}
-
-.question-options {
- margin-top: 1px;
- float: left;
- color: #666;
- line-height: 13px;
+.copyright {
+ color: #616161;
+ width: 450px;
+ float: right;
+ text-align: right;
}
-.question-options label {
- vertical-align: text-bottom;
+.copyright a {
+ color: #8ebcc7;
}
-
-.ask-page input.submit,
-.edit-question-page input.submit {
- float: left;
+.copyright img.license-logo {
+ margin: 6px 0px 20px 10px;
+ float: right;
}
-
-.edit-content-html {
- border-top: 1px dotted #D8D2A9;
- border-bottom: 1px dotted #D8D2A9;
- margin: 5px 0 5px 0;
+.notify-me {
+ float: left;
}
-
-.revision {
- margin: 10px 0 10px 0;
- width: 100%;
- font-size: 13px;
+span.text-counter {
+ margin-right: 20px;
}
-
-.revision .header {
- background-color: #eee;
- padding: 5px;
- cursor: pointer;
+span.form-error {
+ color: #990000;
+ font-weight: normal;
+ margin-left: 5px;
}
-
-.revision .author {
- background-color: #E9E9FF;
+p.form-item {
+ margin: 0px;
}
-
-.revision .summary {
- padding: 5px 0 10px 0;
+.deleted {
+ background: #F4E7E7 none repeat scroll 0 0;
}
-
-.revision .summary span {
- background-color: yellow;
- padding-left: 3px;
- padding-right: 3px;
- display: inline;
+/* openid styles */
+.form-row {
+ line-height: 25px;
}
-
-.revision h1 {
- font-size: 130%;
- font-weight: 600;
- padding: 15px 0 15px 0;
+table.form-as-table {
+ margin-top: 5px;
}
-
-.revision-mark {
- width: 200px;
- text-align: left;
- display: inline-block;
- font-size: 90%;
- overflow: hidden;
+table.form-as-table ul {
+ list-style-type: none;
+ display: inline;
}
-
-.revision-number {
- font-size: 300%;
- font-weight: bold;
- font-family: sans-serif;
+table.form-as-table li {
+ display: inline;
}
-
-.revision .answerbody {
- padding: 10px 0 5px 10px;
+table.form-as-table td {
+ text-align: right;
}
-
-/* Revision pages */
-del {
- color: #FF5F5F;
+table.form-as-table th {
+ text-align: left;
+ font-weight: normal;
}
-
-del .post-tag {
- color: #FF5F5F;
+table.ab-subscr-form {
+ width: 45em;
}
-
-ins {
- background-color: #97ff97;
+table.ab-tag-filter-form {
+ width: 45em;
}
-
-ins p{
- background-color: #97ff97;
+.submit-row {
+ line-height: 30px;
+ padding-top: 10px;
+ display: block;
+ clear: both;
}
-
-ins .post-tag {
- background-color: #97ff97;
+.errors {
+ line-height: 20px;
+ color: red;
}
-
-/*用户资料页é¢*/
-.count {
- font-family: Arial;
- font-size: 200%;
- font-weight: 700;
- color: #777
+.error {
+ color: darkred;
+ margin: 0;
+ font-size: 10px;
}
-
-.scoreNumber {
- font-family: Arial;
- font-size: 35px;
- font-weight: 800;
- color: #777;
- line-height: 40px; /*letter-spacing:0px*/
- margin-top: 3px;
+label.retag-error {
+ color: darkred;
+ padding-left: 5px;
+ font-size: 10px;
}
-
-.user-details {
- font-size: 13px;
+.fieldset {
+ border: none;
+ margin-top: 10px;
+ padding: 10px;
}
-
-.user-about {
- background-color: #EEEEEE;
- height: 200px;
- line-height: 20px;
- overflow: auto;
- padding: 10px;
- width: 90%;
+span.form-error {
+ color: #990000;
+ font-size: 90%;
+ font-weight: normal;
+ margin-left: 5px;
}
-
/*
.favorites-count-off {
color: #919191;
@@ -1613,874 +2513,527 @@ ins .post-tag {
text-align: center;
}
*/
-
/* todo: get rid of this in html */
.favorites-empty {
- width: 32px;
- height: 45px;
- float: left;
+ width: 32px;
+ height: 45px;
+ float: left;
}
-
.user-info-table {
- margin-bottom: 10px;
- border-spacing: 0;
+ margin-bottom: 10px;
+ border-spacing: 0;
}
-
/* todo: remove this hack? */
.user-stats-table .narrow {
- width: 660px;
+ width: 660px;
}
-
.narrow .summary h3 {
- padding: 0px;
- margin: 0px;
+ padding: 0px;
+ margin: 0px;
}
-
.relativetime {
- font-weight: bold;
- text-decoration: none;
+ font-weight: bold;
+ text-decoration: none;
}
-
.narrow .tags {
- float: left;
-}
-
-.answer-summary {
- display: block;
- clear: both;
- padding: 3px;
-}
-
-.answer-votes {
- background-color: #EEEEEE;
- color: #555555;
- float: left;
- font-family: Arial;
- font-size: 110%;
- font-weight: bold;
- height: 15px;
- padding: 4px 4px 5px;
- text-align: center;
- text-decoration: none;
- width: 20px;
- margin-right: 10px;
+ float: left;
}
-
-.vote-count {
- font-family: Arial;
- font-size: 160%;
- font-weight: 700;
- color: #777;
-}
-
/* todo: make these more semantic */
.user-action-1 {
- font-weight: bold;
- color: #333;
+ font-weight: bold;
+ color: #333;
}
-
.user-action-2 {
- font-weight: bold;
- color: #CCC;
+ font-weight: bold;
+ color: #CCC;
}
-
.user-action-3 {
- color: #333;
+ color: #333;
}
-
.user-action-4 {
- color: #333;
+ color: #333;
}
-
.user-action-5 {
- color: darkred;
+ color: darkred;
}
-
.user-action-6 {
- color: darkred;
+ color: darkred;
}
-
.user-action-7 {
- color: #333;
+ color: #333;
}
-
.user-action-8 {
- padding: 3px;
- font-weight: bold;
- background-color: #CCC;
- color: #763333;
+ padding: 3px;
+ font-weight: bold;
+ background-color: #CCC;
+ color: #763333;
}
-
.revision-summary {
- background-color: #FFFE9B;
- padding: 2px;
+ background-color: #FFFE9B;
+ padding: 2px;
}
-
.question-title-link a {
- font-weight: bold;
- color: #0077CC;
+ font-weight: bold;
+ color: #0077CC;
}
-
.answer-title-link a {
- color: #333;
+ color: #333;
}
-
/* todo: make these more semantic */
.post-type-1 a {
- font-weight: bold;
-
+ font-weight: bold;
}
-
.post-type-3 a {
- font-weight: bold;
-
+ font-weight: bold;
}
-
.post-type-5 a {
- font-weight: bold;
+ font-weight: bold;
}
-
.post-type-2 a {
- color: #333;
+ color: #333;
}
-
.post-type-4 a {
- color: #333;
+ color: #333;
}
-
.post-type-6 a {
- color: #333;
+ color: #333;
}
-
.post-type-8 a {
- color: #333;
+ color: #333;
}
-
.hilite {
- background-color: #ff0;
+ background-color: #ff0;
}
-
.hilite1 {
- background-color: #ff0;
+ background-color: #ff0;
}
-
.hilite2 {
- background-color: #f0f;
+ background-color: #f0f;
}
-
.hilite3 {
- background-color: #0ff;
+ background-color: #0ff;
}
-
.gold, .badge1 {
- color: #FFCC00;
+ color: #FFCC00;
}
-
.silver, .badge2 {
- color: #CCCCCC;
+ color: #CCCCCC;
}
-
.bronze, .badge3 {
- color: #CC9933;
+ color: #CC9933;
}
-
.score {
- font-weight: 800;
- color: #333;
+ font-weight: 800;
+ color: #333;
}
-
-.footerLinks {
- color: #EEE;
- font-size: 13px; /* letter-spacing:1px;*/
-}
-
-.footerLinks a {
- color: #FFF;
- font-size: 13px;
-}
-
a.comment {
- background: #EEE;
- color: #993300;
- padding: 5px;
+ background: #EEE;
+ color: #993300;
+ padding: 5px;
}
-
a.offensive {
- color: #999;
-}
-
-.user {
- padding: 5px;
- line-height: 140%;
- width: 170px;
+ color: #999;
}
-
-.user ul {
- margin: 0;
- list-style-type: none;
-}
-
-.user .thumb {
- clear: both;
- float: left;
- margin-right: 4px;
- display: inline;
-}
-
-.message {
- padding: 5px;
- margin: 10px 0 10px 0;
- background-color: #eee;
- border: 1px solid #aaaaaa;
-}
-
.message h1 {
- padding-top: 0px;
- font-size: 15px;
+ padding-top: 0px;
+ font-size: 15px;
}
-
.message p {
- margin-bottom: 0px;
+ margin-bottom: 0px;
}
-
p.space-above {
- margin-top: 10px;
+ margin-top: 10px;
}
-
.warning {
- color: red;
+ color: red;
}
-
-.darkred {
- color: darkred;
-}
-
button::-moz-focus-inner {
- padding:0;
- border:none;
+ 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%;
-}
+ 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;
+ text-decoration: underline;
}
-
.submit.small {
- margin-right:5px;
- height:20px;
- font-weight:normal;
- font-size:12px;
- padding:1px 5px;
+ margin-right: 5px;
+ height: 20px;
+ font-weight: normal;
+ font-size: 12px;
+ padding: 1px 5px;
}
.submit.small:hover {
- text-decoration:none;
+ text-decoration: none;
}
.question-page a.submit {
- display: -moz-inline-stack;
- display: inline-block;
- line-height: 30px;
- padding: 0 5px;
- *display: inline;
-}
-
-.ask-body {
- padding-right: 10px;
-}
-
-.notify {
- position: fixed;
- top: 0px;
- left: 0px;
- width: 100%;
- z-index: 100;
- padding: 0;
- text-align: center;
- font-weight: Bold;
- color: #444;
- background-color: #F4A83D;
-}
-
-.notify p {
- margin-top: 5px;
- margin-bottom: 5px;
- font-size: 16px;
+ display: -moz-inline-stack;
+ display: inline-block;
+ line-height: 30px;
+ padding: 0 5px;
+ *display: inline;
}
-
-#close-notify {
- position: absolute;
- right: 5px;
- top: 5px;
- padding: 0 3px 0 3px;
- color: #735005;
- text-decoration: none;
- font-size: 14px;
- line-height: 18px;
- background-color: #FAD163;
- border: 2px #735005 solid;
- cursor: pointer;
-}
-
-#close-notify:hover {
- text-decoration: none;
-}
-
.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;
+ 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: 15px;
+ font-size: 14px;
}
-
.strong {
- font-weight: bold;
+ font-weight: bold;
}
+.orange {
+ /* used in django.po */
-.orange {/* used in django.po */
- color: #d64000;
- font-weight: bold;
+ color: #d64000;
+ font-weight: bold;
}
-
.grey {
- color: #808080;
+ color: #808080;
}
-
.about div {
- padding: 10px 5px 10px 5px;
- border-top: 1px dashed #aaaaaa;
+ padding: 10px 5px 10px 5px;
+ border-top: 1px dashed #aaaaaa;
}
-
.highlight {
- background-color: #FFF8C6;
+ background-color: #FFF8C6;
}
-
.nomargin {
- margin: 0;
+ margin: 0;
}
-
.margin-bottom {
- margin-bottom: 10px;
+ margin-bottom: 10px;
}
-
.margin-top {
- margin-top: 10px;
+ margin-top: 10px;
}
-
.inline-block {
- display: inline-block;
+ display: inline-block;
}
-
.action-status {
- margin: 0;
- border: none;
- text-align: center;
- line-height: 10px;
- font-size: 12px;
- padding: 0;
+ 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;
-}
+ 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 td {
- vertical-align: top;
+ 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;
+ 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;
+ display: inline;
+ margin-left: 4px;
}
-
table.form-as-table th {
- vertical-align: bottom;
- padding-bottom: 4px;
+ vertical-align: bottom;
+ padding-bottom: 4px;
}
-
.form-row-vertical {
- margin-top: 8px;
- display: block;
+ margin-top: 8px;
+ display: block;
}
-
.form-row-vertical label {
- margin-bottom: 3px;
- display: block;
+ margin-bottom: 3px;
+ display: block;
}
-
/* above stuff needs to go */
.text-align-right {
- text-align: center;
+ text-align: center;
}
-
ul.form-horizontal-rows {
- list-style: none;
- margin: 0;
+ list-style: none;
+ margin: 0;
}
-
ul.form-horizontal-rows li {
- position: relative;
- height: 40px;
+ position: relative;
+ height: 40px;
}
-
ul.form-horizontal-rows label {
- display: inline-block;
+ 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;
+ 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;
+ height: 10px;
}
-
ul.form-horizontal-rows label {
- position: absolute;
- left: 0px;
- bottom: 6px;
- margin: 0px;
- line-height: 12px;
- font-size: 12px;
+ 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;
+ position: absolute;
+ bottom: 0px;
+ left: 180px;
+ margin: 0px;
}
-
.narrow .summary {
- float: left;
+ float: left;
}
-
.user-profile-tool-links {
- font-weight: bold;
- vertical-align: top;
-}
-
-.post-controls, .post-tags {
- font-size: 11px;
- line-height: 12px;
- min-width: 200px;
- padding-left: 5px;
- margin-bottom: 5px;
+ font-weight: bold;
+ vertical-align: top;
}
-
-.post-controls {
- clear: left;
- float: left;
-}
-
ul.post-tags {
- margin-left: 7px;
+ margin-left: 7px;
}
ul.post-tags li {
- margin-top: 4px;
- margin-bottom: 3px;
+ margin-top: 4px;
+ margin-bottom: 3px;
}
-
ul.post-retag {
- margin-bottom:0px;
- margin-left:5px;
+ margin-bottom: 0px;
+ margin-left: 5px;
}
-
#question-controls .tags {
- margin: 0 0 3px 0;
+ margin: 0 0 3px 0;
}
-
-.post-update-info-container {
- float: right;
- min-width: 85px;
-}
-
-.post-update-info {
- display: inline-block;
- float: right;
- font-size: 11px;
- width: 190px;
- margin-bottom: 5px;
- line-height: 14px
-}
-
-.post-update-info p {
- line-height: 13px;
- font-size: 11px;
- margin: 0 0 2px 1px;
- padding: 0;
-}
-
-.post-update-info .gravatar {
- float: left;
- margin-right: 4px;
-}
-
-
-.post-update-info p.tip {
- color: #444;
-}
-
#tagSelector {
- padding-bottom: 2px;
- margin-bottom: 0;
+ padding-bottom: 2px;
+ margin-bottom: 0;
}
-
#related-tags {
- padding-left: 3px;
+ padding-left: 3px;
}
-
#hideIgnoredTagsControl {
- margin: 5px 0 0 0;
+ margin: 5px 0 0 0;
}
-
#hideIgnoredTagsControl label {
- font-size: 12px;
- color: #666;
+ font-size: 12px;
+ color: #666;
}
-
#hideIgnoredTagsCb {
- margin: 0 2px 0 1px;
+ margin: 0 2px 0 1px;
}
-
#recaptcha_widget_div {
- width: 318px;
- float: left;
- clear: both;
+ width: 318px;
+ float: left;
+ clear: both;
}
-
p.signup_p {
- margin: 20px 0px 0px 0px;
+ margin: 20px 0px 0px 0px;
}
-
.simple-subscribe-options ul {
- list-style: none;
- list-style-position: outside;
- margin: 0;
+ list-style: none;
+ list-style-position: outside;
+ margin: 0;
}
-
/* a workaround to set link colors correctly */
-.answer-body a {
- color:#0000ff;
-}
-.question-body a {
- color:#0000ff;
-}
-.question-body li {
- margin-bottom:0.7em;
-}
-.answer-body li {$
- margin-bottom:0.7em;
-}
.wmd-preview a {
- color:#0000ff;
+ color: #1b79bd;
}
.wmd-preview li {
- margin-bottom:0.7em;
+ margin-bottom: 7px;
+ font-size: 14px;
}
-
-.karma-summary {
- padding:5px;
- font-size:13px;
-}
-
-.karma-summary h3 {
- text-align: center;
- font-weight: bold;
- padding:5px;
-}
-
-.karma-diagram {
- width:377px;
- height:300px;
- float:left;
- margin-right:10px;
-}
-
-.karma-details {
- float:right;
- width:300px;
- height:250px;
- overflow-y:auto;
- word-wrap:break-word;
-}
-
-.karma-gained {
- font-weight:bold;
- background:#eee;
- width:20px;
- color:green;
- padding:5px;
-}
-
-.karma-lost {
- font-weight:bold;
- background:#eee;
- width:20px;
- color:red;
- padding:5px;
-}
-
.search-result-summary {
- font-weight: bold;
- font-size:18px;
- line-height:22px;
- margin:0px 0px 0px 0px;
- padding:2px 0 0 0;
- float: left;
+ font-weight: bold;
+ font-size: 18px;
+ line-height: 22px;
+ margin: 0px 0px 0px 0px;
+ padding: 2px 0 0 0;
+ float: left;
}
-.search-tips {
- font-size:12px;
- line-height:12px;
- color: #555;
- margin:0 0 5px 0;
- padding:0px;
- clear:both;
-}
-.search-tips a {
- text-decoration: underline;
- color: #555;
-}
-
-.faq-rep-item {
- text-align:right;
- padding-right:5px;
-}
-
-img.gravatar {
- margin:2px;
+.faq-rep-item {
+ text-align: right;
+ padding-right: 5px;
}
.user-info-table .gravatar {
- margin:0;
+ margin: 0;
}
-
-.vote-notification {
- z-index: 1;
- cursor: pointer;
- display: none;
- position: absolute;
- padding: 15px;
- color: white;
- background-color: darkred;
- text-align: center;
-}
-
-.vote-notification a {
- color: white;
- text-decoration: underline;
-}
-
#responses {
- clear:both;
- line-height:18px;
- margin-bottom:15px;
+ clear: both;
+ line-height: 18px;
+ margin-bottom: 15px;
}
-
#responses div.face {
- float:left;
- text-align: center;
- width: 54px;
- padding: 3px;
- overflow:hidden;
+ float: left;
+ text-align: center;
+ width: 54px;
+ padding: 3px;
+ overflow: hidden;
}
-
.response-parent {
- margin-top: 18px;
+ margin-top: 18px;
}
-
-.response-parent strong{
- font-size: 20px;
+.response-parent strong {
+ font-size: 20px;
}
-
.re {
- min-height: 57px;
- clear: both;
- margin-top: 10px;
+ min-height: 57px;
+ clear: both;
+ margin-top: 10px;
}
-
#responses input {
- float:left;
+ float: left;
}
#re_tools {
- margin-bottom:10px;
+ margin-bottom: 10px;
}
#re_sections {
- margin-bottom:6px;
+ margin-bottom: 6px;
}
#re_sections .on {
- font-weight:bold;
+ font-weight: bold;
}
-
.avatar-page ul {
- list-style: none;
+ list-style: none;
}
.avatar-page li {
- display: inline;
+ display: inline;
}
.user-profile-page .avatar p {
- margin-bottom: 0px;
+ margin-bottom: 0px;
}
.user-profile-page .tabBar a#stats {
- margin-left: 0;
+ margin-left: 0;
}
.user-profile-page img.gravatar {
- margin: 2px 0 3px 0;
+ margin: 2px 0 3px 0;
}
.user-profile-page h3 {
- padding: 0;
- margin-top: -3px;
+ padding: 0;
+ margin-top: -3px;
}
.userList {
- font-size: 13px;
+ font-size: 13px;
}
-
img.flag {
- border: 1px solid #eee;
- vertical-align: text-top;
+ border: 1px solid #eee;
+ vertical-align: text-top;
}
-
.main-page img.flag {
- vertical-align: text-bottom;
-}
-
-.facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon {
- background: url(../images/sprite.png) no-repeat;
- display:block;
- text-indent:-100em;
- height:25px;
- width:25px;
+ vertical-align: text-bottom;
}
-.facebook-share.icon {
- background-position: -25px 0px;
-}
-.identica-share.icon {
- background-position: -85px 0px;
+/* Pretty printing styles. Used with prettify.js. */
+a.edit {
+ padding-left: 3px;
+ color: #145bff;
}
-.twitter-share.icon {
- margin-top:10px;
- background-position: 0px 0px;
+.str {
+ color: #080;
}
-.linkedin-share.icon {
- background-position: -55px 0px;
+.kwd {
+ color: #008;
}
-/* Pretty printing styles. Used with prettify.js. */
-
-a.edit {
- padding-left:3px;
- color: #145bff;
+.com {
+ color: #800;
}
-
-.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 { 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; }
+.typ {
+ color: #606;
}
-
-.follow-toggle {
- border: 2px solid;
- -moz-border-radius:5px;
- -webkit-border-radius:5px;
- border-radius: 5px;
- height: auto;
- width: 200px;
- float:left;
- padding: 0;
- margin-right:100%;
- margin-bottom: 10px;
+.lit {
+ color: #066;
}
-
-.follow-toggle .follow{
- font-color: #000;
- font-style:normal;
- background: #4cd46f;
+.pun {
+ color: #660;
}
-
-.follow-toggle .follow:hover{
- font-weight: bold;
+.pln {
+ color: #000;
}
-
-.follow-toggle .unfollow{
- background: #4cd46f;
+.tag {
+ color: #008;
}
-
-.follow-toggle .unfollow:hover{
- background: #d94849;
+/* name conflict here */
+.atn {
+ color: #606;
}
-
-.follow-toggle .unfollow div.unfollow-red{
- display:none;
+.atv {
+ color: #080;
}
-
-.follow-toggle .unfollow div.unfollow-green{
- background: #4cd46f;
+.dec {
+ color: #606;
}
-
-.follow-toggle .unfollow:hover div.unfollow-red{
- display:inline;
- color:#fff;
- font-weight:bold;
+pre.prettyprint {
+ padding: 3px;
+ border: 0px solid #888;
}
-
-.follow-toggle .unfollow:hover div.unfollow-green{
- display:none;
+@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;
+ }
}
diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less
new file mode 100644
index 00000000..71e2fc36
--- /dev/null
+++ b/askbot/skins/default/media/style/style.less
@@ -0,0 +1,3263 @@
+@import url(jquery.autocomplete.css);
+@import "lib_style.less"; /* 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:@body-font;
+}
+
+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;
+}
+
+p {
+ font-size: 14px;
+ line-height: 140%;
+ margin-bottom: 6px;
+}
+
+a {
+ color:@link;
+ 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: 10px 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:@main-font;
+
+ 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;
+ .sprites(-6px,-5px);
+ cursor: pointer;
+ width:20px;
+ height:20px;
+}
+
+#closeNotify:hover {
+ .sprites(-26px,-5px);
+}
+
+/* ----- Header, check blocks/header.html ----- */
+
+#header {
+ margin-top: 0px;
+ background: @header-color;
+ font-family:@main-font;
+}
+
+.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;
+ position:absolute;
+ bottom: 0;
+ right:0px;
+ padding-bottom:5px;
+
+ a {
+ height: 35px;
+ text-align: right;
+ margin-left: 20px;
+ text-decoration: underline;
+ color:#d0e296;
+ font-size:16px;
+ }
+
+ a:first-child {
+ margin-left: 0;
+ }
+
+ a#ab-responses {
+ margin-left: 3px;
+ }
+
+ .user-info,.user-micro-info{
+ color:#b5b593;
+ }
+
+ a img {
+ vertical-align:middle;
+ margin-bottom:2px;
+ }
+
+ .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;
+
+ 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;
+ }
+
+ a:hover {
+ text-decoration: underline;
+ }
+
+ a.on {
+ font-weight:bold;
+ color: #FFF;
+ text-decoration: none;
+ }
+
+ a.special {
+ font-size: 18px;
+ color: #B02B2C;
+ font-weight: bold;
+ text-decoration: none;
+ }
+
+ a.special:hover {
+ text-decoration: underline;
+ }
+
+ #navTags{
+ .sprites(-50px,-5px)
+ }
+
+ #navUsers{
+ .sprites(-125px,-5px)
+ }
+
+ #navBadges{
+ .sprites(-210px,-5px)
+ }
+}
+
+#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:@main-font;
+
+ #homeButton{
+ border-right:#afaf9e 1px solid;
+ .sprites(-6px,-36px);
+ height:55px;
+ width:43px;
+ display:block;
+ float:left;
+ }
+
+ #homeButton:hover{
+ .sprites(-6px-45,-36px);
+ }
+
+ #scopeWrapper{
+ width:688px;
+ float:left;
+
+ a{
+ display:block;
+ float:left;
+ }
+
+ .scope-selector{
+ font-size:21px;
+ color:#5a5a4b;
+ height:55px;
+ line-height:55px;
+ margin-left:24px
+ }
+ .on{
+ background:url(../images/scopearrow.png) no-repeat center bottom;
+ }
+
+ .ask-message{
+ font-size:24px;
+ }
+ }
+}
+
+#searchBar { /* Main search form , check widgets/search_bar.html */
+ display:inline-block;
+ background-color: #fff;
+ width:412px;
+ border: 1px solid #c9c9b5;
+ float:right;
+ height:42px;
+ margin:6px 0px 0px 15px;
+
+ .searchInput, .searchInputCancelable,
+ .searchInputAuth, .searchInputCancelableAuth {
+ font-size: 30px;
+ height: 40px;
+ font-weight:300;
+ background:#FFF;
+ border:0px;
+ color:#484848;
+ padding-left:10px;
+ font-family:@body-font;
+ vertical-align: middle;
+ }
+
+ .searchInput, .searchInputCancelable {
+ width: 352px;
+ }
+
+ .searchInputCancelable {
+ width: 317px;
+ }
+
+ .searchInputAuth{
+ width: 340px;
+ }
+
+ .searchInputCancelableAuth {
+ width: 310px; /*FIXME byron */
+ }
+
+ .logoutsearch {
+ width: 337px;
+ }
+
+ .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;
+ .sprites(-98px,-36px);
+ cursor:pointer;
+ }
+
+ .searchBtn:hover {
+ .sprites(-98px-48,-36px);
+ }
+
+ .cancelSearchBtn {
+ font-size: 30px;
+ color: #ce8888;
+ background:#fff;
+ height: 42px;
+ border:0px;
+ border-left:#deded0 1px solid;
+ text-align: center;
+ width: 35px;
+ cursor:pointer;
+ }
+
+ .cancelSearchBtn:hover {
+ color: #d84040;
+ }
+}
+
+#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;
+ float:right;
+ text-transform:uppercase;
+ .rounded-corners(5px);
+ .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)
+}
+
+/* ----- 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;
+
+ p {
+ margin-bottom: 4px;
+ }
+
+ p.info-box-follow-up-links {
+ text-align: right;
+ margin: 0;
+ }
+
+ 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:@main-font;
+ }
+ h3{
+ color:#4a757f;
+ font-size:18px;
+ text-align:left;
+ font-weight:normal;
+ font-family:@main-font;
+ }
+ .contributorback{
+ background: #eceeeb url(../images/contributorsback.png) no-repeat center left;
+ }
+
+ label {
+ color: @info-text;
+ font-size:15px;
+ display: block;
+ float: right;
+ width: 177px;
+ font-family:@main-font;
+ }
+
+ ul {
+ margin-left: 22px;
+ }
+
+ li {
+ list-style-type: disc;
+ font-size: 13px;
+ line-height: 20px;
+ margin-bottom: 10px;
+ color:@info-text;
+ }
+ ul.tags {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ line-height: 170%;
+ display: block;
+ }
+ #displayTagFilterControl p label{
+ color:@info-text;
+ font-size:15px;
+ }
+
+ .inputs{
+ #interestingTagInput, #ignoredTagInput{
+ width:158px;
+ border:#c9c9b5 1px solid;
+ height:25px;
+ }
+ #interestingTagAdd, #ignoredTagAdd{
+ background:url(../images/small-button-blue.png) repeat-x top;
+ border:0;
+ color:@button-label;
+ font-weight:bold;
+ font-size:12px;
+ width:30px;
+ height:27px;
+ margin-top:-2px;
+ cursor:pointer;
+ .rounded-corners(4px);
+ .text-shadow(0px,1px,0px,#E6F6FA);
+ .box-shadow(1px, 1px, 2px, #808080);
+
+
+ }
+ #interestingTagAdd:hover, #ignoredTagAdd:hover{
+ background:url(../images/small-button-blue.png) repeat-x bottom;
+ }
+ }
+
+ img.gravatar {
+ margin:1px;
+ }
+
+/* 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);
+ .center;
+ }
+
+ a.followed:hover, a.follow:hover{
+ text-decoration:none;
+ background: url(../images/medium-button.png) bottom repeat-x;
+ .text-shadow(0px, 1px, 0px, #c6d9dd);
+ }
+
+ a.followed div.unfollow{
+ display:none;
+ }
+
+ a.followed:hover div{
+ display:none;
+ }
+ a.followed:hover div.unfollow{
+ display:inline;
+ color:#a05736;
+ }
+
+ .favorite-number {
+ padding: 5px 0 0 5px;
+ font-size: 100%;
+ font-family: Arial;
+ font-weight: bold;
+ color: #777;
+ text-align:center;
+ }
+
+ /* notify by email box */
+ .notify-sidebar #question-subscribe-sidebar {
+ margin: 7px 0 0 3px;
+ }
+}
+
+.statsWidget p{
+ color:@info-text;
+ font-size:16px;
+ border-bottom:#cccccc 1px solid;
+ font-size:13px;
+
+ strong{
+ float:right;
+ padding-right:10px;
+ }
+}
+.questions-related {
+ word-wrap: break-word;
+
+ p {
+ line-height: 20px;
+ padding: 4px 0px 4px 0px;
+ font-size: 16px;
+ font-weight:normal;
+ border-bottom:#cccccc 1px solid;
+ }
+ a{
+ font-size:13px;
+ }
+}
+/* tips and markdown help are widgets for ask template */
+
+#tips{
+ li{
+ color:@info-text;
+ font-size:13px;
+ list-style-image: url(../images/tips.png);
+ }
+ a{
+ font-size:16px;
+ }
+}
+
+#markdownHelp{
+ li{
+ color:@info-text;
+ font-size:13px;
+ }
+ 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:@sort-font;
+ font-size:16px;
+ .rounded-corners(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: @section-title;
+ 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: @button-label;
+}
+
+.tabsA a.rev.on, tabsA a.rev.on:hover {
+}
+
+.tabsA .label, .tabsC .label {
+ float: left;
+ color: #646464;
+ margin-top:4px;
+ margin-right:5px;
+}
+
+.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;
+}
+
+.rss {
+ float: right;
+ font-size: 16px;
+ color: #f57900;
+ margin: 5px 0px 3px 7px;
+ width:52px;
+ padding-left: 16px;
+ padding-top:3px;
+ background:#fff url(../images/feed-icon-small.png) no-repeat center right;
+ float:right;
+ font-family:@sort-font;
+ 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:23px;
+ color:@section-title;
+ width:200px;
+ float:left;
+ margin-bottom:8px;
+ padding-top:6px;
+ font-family:@main-font;
+}
+
+#listSearchTags{
+ float:left;
+ margin-top:3px;
+ color:@info-text;
+ font-size:16px;
+ font-family:@main-font;
+}
+
+ul#searchTags {
+ margin-left:10px;
+ float:right;
+ padding-top:2px;
+}
+
+.search-tips {
+ font-size:16px;
+ line-height:17px;
+ color: @info-text;
+ margin:5px 0 10px 0;
+ padding:0px;
+ float:left;
+ font-family:@main-font;
+
+ a {
+ text-decoration: underline;
+ color: @link;
+ }
+}
+
+/* ----- 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;
+ border-bottom: 1px solid #DDDBCE;
+ margin-bottom:1px;
+ overflow: hidden;
+ width: 710px;
+ float: left;
+ background: url(../images/summary-background.png) repeat-x;
+
+ h2 {
+ font-size: 24px;
+ font-weight:normal;
+ line-height: 26px;
+ padding-left: 0;
+ margin-bottom:8px;
+ display:block;
+ font-family:@main-font;
+ }
+
+ a {
+ color:@question-link;
+ }
+
+ .userinfo {
+ text-align:right;
+ line-height:16px;
+ font-family:@body-font;
+ padding-right:4px;
+ }
+
+
+ .userinfo .relativetime, span.anonymous
+ {
+ font-size: 11px;
+ clear:both;
+ font-weight: normal;
+ color: #555;
+ }
+
+ .userinfo a{
+ font-weight:bold;
+ font-size:11px;
+ }
+
+ .counts {
+ float: right;
+ margin: 4px 0 0 5px;
+ font-family:@main-font;
+ }
+
+ .counts .item-count {
+ padding:0px 5px 0px 5px;
+ font-size: 25px;
+ font-family:@main-font;
+ }
+
+ .counts .votes div,
+ .counts .views div,
+ .counts .answers div,
+ .counts .favorites div
+ {
+ margin-top:3px;
+ font-size: 14px;
+ line-height:14px;
+ color: #646464;
+ }
+
+ .tags {
+ margin-top: 0;
+ }
+
+ .votes, .answers, .favorites, .views {
+ text-align: center;
+ margin: 0 3px;
+ padding: 8px 2px 0px 2px;
+ width: 51px;
+ float: right;
+ height:44px;
+ border:#dbdbd4 1px solid;
+ }
+
+ .votes{
+ background: url(../images/vote-background.png) repeat-x;
+ }
+
+ .answers{
+ background:url(../images/answers-background.png) repeat-x;
+ }
+
+ .views {
+ background:url(../images/view-background.png) repeat-x;
+ }
+
+ .no-votes .item-count {
+ color: #b1b5b6;
+ }
+ .some-votes .item-count {
+ color: #4a757f;
+ }
+
+ .no-answers .item-count {
+ color: #b1b5b6;
+ }
+ .some-answers .item-count {
+ color: #eab243;
+ }
+
+ .no-views .item-count {
+ color: #b1b5b6;
+ }
+ .some-views .item-count {
+ color: #d33f00;
+ }
+
+ .accepted .item-count {
+ background:url(../images/accept.png) no-repeat top right;
+ display: block;
+ text-align: center;
+ width: 40px;
+ color: #eab243;
+ }
+
+ .some-favorites .item-count {
+ background:#338333;
+ color:#d0f5a9;
+ }
+ .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:@info-text;
+ padding:15px 0px 10px 0px;
+ clear:both;
+}
+
+.evenMore a {
+ text-decoration: underline;
+ color:@link;
+}
+
+.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;
+
+ .prev a, .prev a:visited,
+ .next a, .next a:visited {
+ background-color: #fff;
+ color: #777;
+ padding: 2px 4px 3px 4px;
+ }
+ a{
+ color:@section-title;
+ }
+ .prev {
+ margin-right: .5em;
+ }
+
+ .next {
+ margin-left: .5em;
+ }
+
+ .page a, .page a:visited, .curr {
+ padding: .25em;
+ background-color: #fff;
+ margin: 0em .25em;
+ color: #ff;
+ }
+
+ .curr {
+ background-color: #8ebcc7;
+ color: #fff;
+ font-weight: bold;
+ }
+ .next a, .prev a{
+ color:@section-title
+ }
+ .page a:hover,
+ .curr a:hover,
+ .prev a:hover,
+ .next a:hover {
+ color: #8C8C8C;
+ background-color: #E1E1E1;
+ text-decoration: none;
+ }
+
+ .text {
+ color: #777;
+ padding: .3em;
+ }
+
+ .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 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 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;
+ 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:@body-font;
+ 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;
+}
+
+/* ----- Ask and Edit Question Form template----- */
+
+.section-title{
+ color:@section-title;
+ font-family:@main-font;
+ font-weight:bold;
+ font-size:24px;
+}
+
+.ask-body {
+ padding-right: 10px;
+}
+
+#fmask{
+ margin-bottom:30px;
+ width:100%;
+}
+
+#askFormBar {
+ display:inline-block;
+ padding: 4px 7px 5px 0px;
+ margin-top:0px;
+
+ p{
+ margin:0 0 5px 0;
+ font-size:14px;
+ color:@info-text-dark;
+ line-height:1.4;
+ }
+ .questionTitleInput {
+ font-size: 24px;
+ line-height: 24px;
+ height: 36px;
+ margin: 0px;
+ padding: 0px 0 0 5px;
+ border:#cce6ec 3px solid;
+ width:725px;
+ }
+}
+
+.ask-page, .edit-question-page{
+
+ div#question-list {
+ float: none;
+ border-bottom:#f0f0ec 1px solid;
+ float:left;
+ margin-bottom:10px;
+ a{
+ line-height:30px;
+ }
+
+ }
+
+ div#question-list h2 {
+ font-size: 13px;
+ padding-bottom: 0;
+ color:@link;
+ border-top:#f0f0ec 1px solid;
+ border-left:#f0f0ec 1px solid;
+ height:30px;
+ line-height:30px;
+ font-weight:normal;
+ }
+
+ 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;
+ .rounded-corners(3px);
+ }
+ label{
+ color:@info-text-dark;
+ font-size:13px;
+ }
+
+ #id_tags{
+ border:#cce6ec 3px solid;
+ height:25px;
+ padding-left:5px;
+ width:395px;
+ font-size:14px;
+ }
+}
+
+.title-desc {
+ color: @info-text;
+ 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:@main-font;
+ color:@button-label;
+ font-weight:normal;
+ font-size:21px;
+ margin-top:3px;
+ .rounded-corners(4px);
+ .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)
+}
+#editor { /*adjustment for editor preview*/
+ 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:@body-font;
+
+ 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; /*letter-spacing:1px;*/
+ text-align: left;
+}
+
+.preview-toggle span:hover {
+ cursor: pointer;
+}
+
+.after-editor {
+ margin-top: 10px;
+}
+
+.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{
+ color:@info-text-dark;
+
+ #id_revision{
+ font-size:14px;
+ margin-top:5px;
+ margin-bottom:5px;
+ }
+ #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;
+ }
+ #id_summary{
+ border:#cce6ec 3px solid;
+ height:25px;
+ padding-left:5px;
+ width:395px;
+ font-size:14px;
+ }
+ .title-desc{
+ margin-bottom:10px;
+ }
+}
+
+/* ----- Question template ----- */
+
+.question-page{
+
+ h1{
+ padding-top:0px;
+ font-family:@main-font;
+ }
+
+ h1 a{
+ color:@question-link;
+ font-size:30px;
+ font-weight:normal;
+ line-height:1;
+ }
+
+ p.rss {
+ float:none;
+ clear:both;
+ padding: 3px 0 0 23px;
+ font-size: 15px;
+ width:110px;
+ background-position:center left;
+ margin-left:0px !important;
+ }
+
+ p.rss a {
+ font-family:@main-font;
+ vertical-align: top;
+ }
+
+ .question-content{
+ float:right;
+ width:690px;
+ margin-bottom:10px;
+ }
+
+ #question-table{
+ float:left;
+ border-top:#f0f0f0 1px solid;
+ }
+
+ #question-table,
+ .answer-table {
+ margin: 6px 0 0px 0;
+ border-spacing: 0px;
+ width: 680px;
+ padding-right:3px;
+ }
+
+ .answer-table {
+ margin-top:0px;
+ border-bottom: 1px solid #D4D4D4;
+ float:left;
+ }
+
+ .answer-table td,
+ #question-table td {
+ width:20px;
+ vertical-align:top;
+ }
+ .question-body, .answer-body {
+ overflow: auto;
+ margin-top:10px;
+ font-family:@body-font;
+ color:#4b4b4b;
+
+ p{
+ margin-bottom:14px;
+ line-height:1.4;
+ font-size:14px;
+ padding:0px 5px 5px 0px;
+ }
+
+ a {
+ color:@link;
+ }
+
+ li {
+ margin-bottom:7px;
+ }
+ }
+
+ .question-body IMG, .answer-body IMG {
+ max-width: 600px;
+ }
+
+ .post-update-info-container {
+ float: right;
+ width: 175px;
+ }
+
+ .post-update-info {
+ background: #fff url(../images/background-user-info.png) repeat-x bottom;
+ float: right;
+ font-size: 9px;
+ font-family:@secondary-font;
+ width: 158px;
+ padding:4px;
+ margin:0px 0px 5px 5px;
+ line-height: 14px;
+ .rounded-corners(4px);
+ .box-shadow (0px, 2px,1px,#bfbfbf);
+
+ p {
+ line-height: 13px;
+ font-size: 11px;
+ margin: 0 0 2px 1px;
+ padding: 0;
+ }
+ a{
+ color:#444;
+ }
+ .gravatar {
+ float: left;
+ margin-right: 4px;
+ }
+
+ p.tip {
+ color: #444;
+ line-height: 13px;
+ font-size: 10px;
+ }
+ }
+
+ .post-controls{
+ font-size: 11px;
+ line-height: 12px;
+ min-width: 200px;
+ padding-left: 5px;
+ text-align:right;
+ clear: left;
+ float: right;
+ margin-top:10px;
+
+ a {
+ color: #777;
+ padding: 0px 3px 3px 22px;
+ cursor: pointer;
+ border: none;
+ font-size:12px;
+ font-family:@body-font;
+ text-decoration: none;
+ height:18px;
+ display:block;
+ float:right;
+ line-height:18px;
+ margin-top:-2px;
+ margin-left:4px;
+ }
+
+ a:hover {
+ background-color: #f5f0c9;
+
+ }
+ .sep {
+ color: #ccc;
+ float:right;
+ height:18px;
+ font-size:18px;
+ }
+ }
+ .post-controls, .answer-controls{
+ .question-delete{
+ background: url(../images/delete.png) no-repeat center left;
+ padding-left:16px;
+ }
+ .question-flag{
+ background: url(../images/flag.png) no-repeat center left;
+ }
+ .question-edit{
+ background: url(../images/edit2.png) no-repeat center left;
+ }
+ .question-retag{
+ background: url(../images/retag.png) no-repeat center left;
+ }
+ .question-close{
+ background: url(../images/close.png) no-repeat center left;
+ }
+ .permant-link{
+ background: url(../images/link.png) no-repeat center left;
+ }
+ }
+ .tabBar{
+ width:100%;
+ }
+
+ #questionCount{
+ float:left;
+ font-family:@main-font;
+ line-height:15px;
+ }
+
+ .question-img-upvote, .question-img-downvote,
+ .answer-img-upvote, .answer-img-downvote {
+ width: 25px;
+ height: 20px;
+ cursor:pointer;
+ }
+
+ .question-img-upvote, .answer-img-upvote {
+ background: url(../images/vote-arrow-up-new.png) no-repeat;
+ }
+
+ .question-img-downvote, .answer-img-downvote {
+ background: url(../images/vote-arrow-down-new.png) no-repeat;
+ }
+
+ .question-img-upvote:hover, .question-img-upvote.on,
+ .answer-img-upvote:hover, .answer-img-upvote.on {
+ background: url(../images/vote-arrow-up-on-new.png) no-repeat;
+ }
+
+ .question-img-downvote:hover, .question-img-downvote.on,
+ .answer-img-downvote:hover, .answer-img-downvote.on {
+ background: url(../images/vote-arrow-down-on-new.png) no-repeat;
+ }
+
+ .question-img-favorite:hover {
+ background: url(../images/vote-favorite-on.png)
+ }
+ div.comments {
+ padding: 0;
+ }
+ #comment-title{
+ font-weight:bold;
+ font-size:23px;
+ color:@section-title;
+ width:200px;
+ float:left;
+ font-family:@main-font;
+ }
+ .comments {
+ font-size: 12px;
+ clear: both;
+
+ div.controls {
+ clear: both;
+ float:left;
+ width: 100%;
+ margin: 3px 0 20px 5px;
+ }
+
+ .controls a {
+ color: #988e4c;
+ padding: 0 3px 2px 22px;
+ font-family:@body-font;
+ font-size:13px;
+ background:url(../images/comment.png) no-repeat center left;
+ }
+
+ .controls a:hover {
+ background-color: #f5f0c9;
+ text-decoration: none;
+ }
+
+ .button {
+ color: #988e4c;
+ font-size: 11px;
+ padding: 3px;
+ cursor: pointer;
+ }
+ a {
+ background-color: inherit;
+ color: @link;
+ padding: 0;
+ }
+
+ form.post-comments {
+ margin: 3px 30px 4px 5px;
+ }
+
+ textarea {
+ height: 42px;
+ width:100%;
+ margin: 12px 0 5px 1px;
+ font-family: @body-font;
+ outline: none;
+ overflow:auto;
+ font-size: 12px;
+ line-height: 140%;
+ padding-left:2px;
+ padding-top:4px;
+ border:#cce6ec 3px solid;
+ }
+
+ input {
+ margin-left: 10px;
+ margin-top: 1px;
+ vertical-align: top;
+ width: 100px;
+ }
+ button{
+ background:url(../images/small-button-blue.png) repeat-x top;
+ border:0;
+ color:@button-label;
+ font-size:12px;
+ width:95px;
+ font-weight:bold;
+ height:24px;
+ margin-top:-2px;
+ cursor:pointer;
+ .rounded-corners(4px);
+ .text-shadow(0px,1px,0px,#E6F6FA);
+ .box-shadow(1px, 1px, 2px, #808080);
+ float:left;
+ }
+ button:hover{
+ background: url(../images/small-button-blue.png) bottom repeat-x;
+ .text-shadow(0px, 1px, 0px, #c6d9dd);
+ }
+ .counter {
+ display: inline-block;
+ width: 245px;
+ float:right;
+ color:#b6a475 !important;
+ vertical-align: top;
+ font-family:@body-font;
+ float:right;
+ text-align:right;
+ }
+ .comment {
+ border-bottom: 1px solid #edeeeb;
+ margin: 0;
+ margin-top:8px;
+ padding-bottom:4px;
+ overflow: auto;
+ font-family:@body-font;
+ font-size:11px;
+ min-height: 25px;
+ background:url(../images/comment-background.png) bottom repeat-x;
+ .rounded-corners(5px);
+ }
+ div.comment:hover {
+ background-color: #efefef;
+ }
+ a.author{
+ background-color: inherit;
+ color: @link;
+ padding: 0;
+ }
+
+ a.author:hover {
+ text-decoration: underline;
+ }
+ span.delete-icon{
+ background:url(../images/close-small.png) no-repeat;
+ }
+ span.delete-icon:hover{
+ border:#BC564B 2px solid;
+ .rounded-corners(10px);
+
+ }
+ .content {
+ margin-bottom: 7px;
+ }
+
+ .comment-votes {
+ float: left;
+ width: 37px;
+ line-height: 130%;
+ padding: 6px 5px 6px 3px;
+ }
+
+ .comment-body {
+ line-height: 1.3;
+ margin: 3px 26px 0 46px;
+ padding: 5px 3px;
+ color: #666;
+ font-size:13px;
+ }
+
+ .comment-body p{
+ font-size:13px;
+ line-height:1.3;
+ margin-bottom: 3px;
+ padding: 0;
+ }
+
+ .comment-delete {
+ float: right;
+ width: 14px;
+ line-height: 130%;
+ padding: 8px 6px;
+ }
+
+ .upvote {
+ margin: 0px;
+ padding-right: 17px;
+ padding-top: 2px;
+ text-align: right;
+ height: 20px;
+ font-size: 13px;
+ font-weight: bold;
+ color: #777;
+ }
+
+ .upvote.upvoted {
+ color: #d64000;
+ }
+
+ .upvote.hover {
+ background: url(../images/go-up-grey.png) no-repeat;
+ background-position: right 1px;
+ }
+
+ .upvote:hover {
+ background: url(../images/go-up-orange.png) no-repeat;
+ background-position: right 1px;
+ }
+
+ .help-text{
+ float: right;
+ text-align:right;
+ color: gray;
+ margin-bottom: 0px;
+ margin-top: 0px;
+ line-height: 50%;
+ }
+ }
+ #questionTools {
+ font-size: 22px;
+ margin-top: 11px;
+ text-align: left;
+ }
+
+ .question-status {
+ margin-top: 10px;
+ margin-bottom:15px;
+ padding: 20px;
+ background-color: #fef7cc;
+ text-align: center;
+ border:#e1c04a 1px solid;
+ }
+
+ .question-status h3 {
+ font-size: 20px;
+ color:@info-text;
+ font-weight:normal;
+ }
+
+ .vote-buttons {
+ float: left;
+ text-align: center;
+ padding-top: 2px;
+ margin:3px 10px 0px 3px;
+ }
+
+ .vote-buttons IMG {
+ cursor: pointer;
+ }
+
+ .vote-number {
+ font-family: @main-font;
+ padding: 0px 0 5px 0;
+ font-size: 25px;
+ font-weight: bold;
+ color: #777;
+ }
+
+ .vote-buttons .notify-sidebar {
+ text-align: left;
+ }
+ .vote-buttons .notify-sidebar label {
+ vertical-align: top;
+ }
+
+ .tabBar-answer{
+ margin-bottom:15px;
+ padding-left:7px;
+ width:723px;
+ margin-top:10px;
+ }
+ .answer{
+ .vote-buttons {
+ float:left;
+ }
+ }
+ .accepted-answer {
+ background-color: #f7fecc;
+ border-bottom-color: #9BD59B;
+
+ .vote-buttons {
+ width:27px;
+ margin-right:10px;
+ }
+ }
+
+ .answer .post-update-info a{
+ color:#444444;
+ }
+
+ .accepted-answer .comments {
+ background-color: #f1f6d4;
+ }
+
+ .answered {
+ background: #CCC;
+ color: #999;
+ }
+
+ .answered-accepted {
+ background: #DCDCDC;
+ color: #763333;
+
+ strong {
+ color: #E1E818;
+ }
+ }
+
+ .answered-by-owner {
+ background: #F1F1FF;
+
+ .comments .button {
+ background-color: #E6ECFF;
+ }
+ .comments {
+ background-color: #E6ECFF;
+ }
+ .vote-buttons {
+ margin-right:10px;
+ }
+ }
+
+ .answer-img-accept:hover {
+ background: url(../images/vote-accepted-on.png)
+ }
+ .answer-body a {
+ color:@link;
+ }
+ .answer-body li {
+ margin-bottom:0.7em;
+ }
+
+ #fmanswer{
+ color:@info-text;
+ line-height:1.2;
+ margin-top:10px;
+ p{
+ font-size:13px;
+ line-height:1.3;
+ }
+ h2{
+ font-family:@main-font;
+ color:@section-title;
+ font-size:24px;
+ }
+ label{
+ font-size:13px;
+ }
+ }
+ .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,
+.users-page,
+{
+ font-size:13px;
+ line-height:1.3;
+ color:@info-text-dark;
+ p{
+ font-size:13px;
+ color:@info-text;
+ line-height:1.3;
+ font-family:@body-font;
+ color:@info-text-dark;
+ margin-bottom:12px;
+ }
+ h2{
+ color:@info-text-dark;
+ padding-left:0px;
+ font-size:16px;
+ }
+ #id_email,#id_name,#id_username,#id_password1,#id_password2{
+ border:#cce6ec 3px solid;
+ height:25px;
+ padding-left:5px;
+ width:395px;
+ font-size:14px;
+ }
+ textarea{
+ border:#cce6ec 3px solid;
+ padding-left:5px;
+ padding-top:5px;
+ width:395px;
+ 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:16px;
+ height:24px;
+ margin-top:-2px;
+ cursor:pointer;
+ .rounded-corners(4px);
+ .text-shadow(0px,1px,0px,#E6F6FA);
+ .box-shadow(1px, 1px, 2px, #808080);
+ }
+ input.submit:hover{
+ background:url(../images/small-button-blue.png) repeat-x bottom;
+ text-decoration:none;
+ }
+ .cancel{
+ background:url(../images/small-button-cancel.png) repeat-x top !important;
+ color:#525252 !important;
+ }
+ .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;
+ #id_email,#id_username,#id_password,input{
+ font-size: 12px;
+ line-height: 20px;
+ height: 20px;
+ margin: 0px;
+ padding: 0px 0 0 5px;
+ border:#cce6ec 3px solid;
+ width:200px;
+ }
+ .submit-b{
+ background:url(../images/small-button-blue.png) repeat-x top;
+ border:0;
+ color:@button-label;
+ font-weight:bold;
+ font-size:12px;
+ height:24px;
+ margin-top:-2px;
+ cursor:pointer;
+ .rounded-corners(4px);
+ .text-shadow(0px,1px,0px,#E6F6FA);
+ .box-shadow(1px, 1px, 2px, #808080)
+ }
+ .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%;
+}
+
+/* People page */
+
+.tabBar-user{
+ width:375px;
+}
+
+.user {
+ padding: 5px;
+ line-height: 140%;
+ width: 166px;
+ border:#eee 1px solid;
+ margin-bottom:5px;
+ .rounded-corners(3px);
+ .user-micro-info{
+ color:@info-text-dark;
+ }
+
+}
+
+.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:@info-text-dark;
+
+ p{
+ font-size:13px;
+ line-height:1.3;
+ color:@info-text-dark;
+ }
+ .avatar img{
+ border:#eee 1px solid;
+ padding:5px;
+ }
+ h2{
+ padding:10px 0px 10px 0px;
+ font-family:@main-font;
+ }
+}
+
+.user-details {
+ font-size: 13px;
+ h3{
+ font-size:16px;
+ }
+}
+
+.user-about {
+ background-color: #EEEEEE;
+ height: 200px;
+ line-height: 20px;
+ overflow: auto;
+ padding: 10px;
+ width: 90%;
+ p{font-size:13px;}
+}
+
+.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)
+}
+
+.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: @main-font;
+ font-size: 200%;
+ font-weight: 700;
+ color: #777
+}
+
+.scoreNumber {
+ font-family: @main-font;
+ 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;
+ .rounded-corners(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;
+ 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;
+ .rounded-corners(3px);
+}
+
+.karma-lost {
+ font-weight:bold;
+ background:#eee;
+ width:25px;
+ color:red;
+ padding:3px;
+ display:block;
+ margin-right:5px;
+ float:left;
+ text-align:center;
+ .rounded-corners(3px);
+}
+
+.submit-row{
+ margin-bottom:10px;
+}
+
+/*----- Revision pages ----- */
+
+.revision {
+ margin: 10px 0 10px 0;
+ font-size: 13px;
+ color:@info-text-dark;
+
+ p{
+ font-size:13px;
+ line-height:1.3;
+ color:@info-text-dark;
+ }
+
+ h3{
+ font-family:@main-font;
+ font-size:21px;
+ padding-left:0px;
+ }
+
+ .header {
+ background-color: #F5F5F5;
+ padding: 5px;
+ cursor: pointer;
+ }
+
+ .author {
+ background-color: #e9f3f5;
+ }
+
+ .summary {
+ padding: 5px 0 10px 0;
+ }
+
+ .summary span {
+ background-color:#fde785;
+ padding:6px;
+ .rounded-corners(4px);
+ display: inline;
+ .box-shadow(1px, 1px, 4px, #cfb852);
+ }
+
+ .answerbody {
+ padding: 10px 0 5px 10px;
+ }
+
+ .revision-mark {
+ width: 150px;
+ text-align: left;
+ display: inline-block;
+ font-size: 11px;
+ overflow: hidden;
+
+ .gravatar{
+ float:left;
+ margin-right:4px;
+ padding-top:5px;
+ }
+ }
+
+ .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:@secondary-font;
+ font-size:14px;
+ font-weight:normal;
+ color: white;
+ background-color: #8e0000;
+ text-align: center;
+ padding-bottom:10px;
+ .box-shadow(0px, 2px, 4px, #370000);
+ .rounded-corners(4px);
+
+ 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;
+ .rounded-corners-top(4px);
+ }
+ 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: @header-color;
+ font-size:16px;
+ font-family:@main-font;
+
+ p {
+ margin-bottom:0;
+ }
+}
+
+.footer-links {
+ color: #EEE;
+ text-align:left;
+ width:500px;
+ float:left;
+ a {
+ color: #e7e8a8;
+ }
+}
+
+.powered-link{
+ width:500px;
+ float:left;
+ text-align:left;
+ a{
+ color:#8ebcc7;
+ }
+}
+
+.copyright{
+ color:#616161;
+ width:450px;
+ float:right;
+ text-align:right;
+
+ a{
+ color:#8ebcc7;
+ }
+ 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;
+}
+
+
+/* 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;
+}
+
+.relativetime {
+ 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 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: 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;
+}
+
+/* a workaround to set link colors correctly */
+
+.wmd-preview a {
+ color:@link;
+}
+
+.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;
+}
+
+
+/* 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 { 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; }
+}
diff --git a/askbot/skins/default/templates/about.html b/askbot/skins/default/templates/about.html
index fce4223e..d5d1b949 100644
--- a/askbot/skins/default/templates/about.html
+++ b/askbot/skins/default/templates/about.html
@@ -2,7 +2,7 @@
<!-- template about.html -->
{% block title %}{% spaceless %}{% trans site_name=settings.APP_SHORT_NAME %}About {{site_name}}{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>{% trans site_name=settings.APP_SHORT_NAME %}About {{site_name}}{% endtrans %}</h1>
+<h1 class="section-title">{% trans site_name=settings.APP_SHORT_NAME %}About {{site_name}}{% endtrans %}</h1>
<div class="content">
{{settings.FORUM_ABOUT}}
</div>
diff --git a/askbot/skins/default/templates/answer_edit.html b/askbot/skins/default/templates/answer_edit.html
index e8cbc7ae..bbf3edef 100644
--- a/askbot/skins/default/templates/answer_edit.html
+++ b/askbot/skins/default/templates/answer_edit.html
@@ -6,34 +6,35 @@
<link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
{% endblock %}
{% block content %}
-<h1>
+<h1 class="section-title">
{% trans %}Edit answer{% endtrans %} [<a href="{{ answer.question.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 %}
- <label for="id_revision" ><strong>{% trans %}revision{% endtrans %}:</strong></label> <br/>
+ <label for="id_revision" >{% trans %}revision{% endtrans %}:</label> <br/>
{% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul() }}{% endif %}
<div style="vertical-align:middle">
{{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision" value="{% trans %}select revision{% endtrans %}">
</div>
{{ macros.edit_post(form) }}
+ {% if settings.WIKI_ON and answer.wiki == False %}
+ {{ macros.checkbox_in_div(form.wiki) }}
+ {% endif %}
<div class="after-editor">
<input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
<input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
</div>
- {% if settings.WIKI_ON and answer.wiki == False %}
- {{ macros.checkbox_in_div(form.wiki) }}
- {% endif %}
+
</form>
</div>
{% endblock %}
{% block sidebar %}
- {% include "blocks/answer_edit_tips.html" %}
+ {% include "widgets/answer_edit_tips.html" %}
{% endblock %}
{% block endjs %}
- {% include "blocks/editor_data.html" %}
+ {% include "meta/editor_data.html" %}
<script type='text/javascript' src='{{"/js/editor.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>
diff --git a/askbot/skins/default/templates/ask.html b/askbot/skins/default/templates/ask.html
index 9aaa7e8c..3849ef3b 100644
--- a/askbot/skins/default/templates/ask.html
+++ b/askbot/skins/default/templates/ask.html
@@ -7,7 +7,10 @@
{% endblock %}
{# main contents of ask form is in the template input_bar #}
{% block sidebar %}
-{% include "blocks/question_edit_tips.html" %}
+{% include "widgets/question_edit_tips.html" %}
+{% endblock %}
+{% block content %}
+ {% include "widgets/ask_form.html" %}
{% endblock %}
{% block endjs %}
<script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
@@ -20,9 +23,9 @@
var minSearchWordLength = {{settings.MIN_SEARCH_WORD_LENGTH}};
</script>
<script type='text/javascript' src='{{"/js/live_search.js"|media}}'></script>
- {% include "blocks/editor_data.html" %}
+ {% include "meta/editor_data.html" %}
{% if mandatory_tags %}
- {% include "blocks/mandatory_tags_js.html" %}
+ {% include "meta/mandatory_tags_js.html" %}
{% endif %}
<script type='text/javascript'>
askbot['urls']['api_get_questions'] = '{% url api_get_questions %}';
@@ -60,4 +63,5 @@
});
</script>
{% endblock %}
+
<!-- end template ask.html -->
diff --git a/askbot/skins/default/templates/badge.html b/askbot/skins/default/templates/badge.html
index ee7f5360..d1f75617 100644
--- a/askbot/skins/default/templates/badge.html
+++ b/askbot/skins/default/templates/badge.html
@@ -1,9 +1,10 @@
{% extends "two_column_body.html" %}
{% import "macros.html" as macros %}
+{%from "macros.html" import gravatar %}
<!-- template badge.html -->
{% block title %}{% spaceless %}{% trans name=badge.name %}{{name}}{% endtrans %} - {% trans %}Badge{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>{% trans name=badge.name %}Badge "{{name}}"{% endtrans %}</h1>
+<h1 class="section-title">{% trans name=badge.name %}Badge "{{name}}"{% endtrans %}</h1>
<p>
<a href="{{badge.get_absolute_url()}}" title="{{ badge.get_type_display() }} : {% trans description=badge.description %}{{description}}{% endtrans %}" class="medal"><span class="{{ badge.css_class }}">&#9679;</span>&nbsp;{% trans name=badge.name%}{{name}}{% endtrans %}</a> {% trans description=badge.description %}{{description}}{% endtrans %}
</p>
@@ -13,11 +14,16 @@
<strong>{% trans num_awardees=badge_recipients|length %}user received this badge:{% pluralize %}users received this badge:{% endtrans %}</strong></p>
{% endif %}
</div>
- <div id="award-list" style="clear:both;margin-left:20px;line-height:25px;">
+ <div class="clean"></div>
+ <div id="award-list">
{% for recipient in badge_recipients %}
- <p style="width:180px;float:left"><a href="{{ recipient.get_absolute_url() }}">{{ recipient.username }}</a>
- {{ macros.user_score_and_badge_summary(recipient) }}
- </p>
+ <div class="user">
+ <ul>
+ <li class="thumb">{{ gravatar(recipient, 32) }}</li>
+ <li><a href="{{ recipient.get_absolute_url() }}">{{recipient.username}}</a></li>
+ <li>{{ macros.user_score_and_badge_summary(recipient) }}</li>
+ </ul>
+ </div>
{% endfor %}
</div>
{% endblock %}
diff --git a/askbot/skins/default/templates/badges.html b/askbot/skins/default/templates/badges.html
index bbd09951..08827da3 100644
--- a/askbot/skins/default/templates/badges.html
+++ b/askbot/skins/default/templates/badges.html
@@ -2,7 +2,7 @@
<!-- template badges.html -->
{% block title %}{% spaceless %}{% trans %}Badges summary{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>{% trans %}Badges{% endtrans %}</h1>
+<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
@@ -31,7 +31,7 @@ of times each type of badge has been awarded. Give us feedback at {{feedback_faq
</div>
{% endblock %}
{% block sidebar %}
-<div class="boxC">
+<div class="box">
<h2>{% trans %}Community badges{% endtrans %}</h2>
<p>
<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>
diff --git a/askbot/skins/default/templates/base.html b/askbot/skins/default/templates/base.html
index 9f779945..9e44494b 100644
--- a/askbot/skins/default/templates/base.html
+++ b/askbot/skins/default/templates/base.html
@@ -4,60 +4,32 @@
{% spaceless %}
<head>
<title>{% block title %}{% endblock %} - {{ settings.APP_TITLE|escape }}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- {% block meta_description %}
- <meta name="description" content="{{settings.APP_DESCRIPTION|escape}}" />
- {% endblock %}
- <meta name="keywords" content="{%block keywords%}{%endblock%},{{settings.APP_KEYWORDS|escape}}" />
- {% if settings.GOOGLE_SITEMAP_CODE %}
- <meta name="google-site-verification" content="{{settings.GOOGLE_SITEMAP_CODE}}" />
- {% endif %}
+ {% include "meta/html_head_meta.html" %}
<link rel="shortcut icon" href="{{ settings.SITE_FAVICON|media }}" />
- <link href="{{"/style/style.css"|media }}" rel="stylesheet" type="text/css" />
- {{ skin.get_extra_css_link() }}
- {% if settings.USE_CUSTOM_CSS %}
- <link
- href="{% url "custom_css" %}?v={{settings.MEDIA_RESOURCE_REVISION}}"
- rel="stylesheet"
- type="text/css"
- />
- {% endif %}
+ {% include "meta/html_head_stylesheets.html" %}
{% block forestyle %}{% endblock %}
- {% if user_messages %}
- <style type="text/css">
- body { margin-top:2.4em; }
- </style>
- {% endif %}
+ {% include "meta/html_head_javascript.html" %}
{% if settings.USE_CUSTOM_HTML_HEAD %}
{{ settings.CUSTOM_HTML_HEAD }}
{% endif %}
- <script type="text/javascript">
- var askbot = {};
- askbot['data'] = {};
- askbot['urls'] = {};
- askbot['settings'] = {};
- askbot['messages'] = {};
- </script>
- {% block forejs %}
- {% endblock %}
- {# avoid adding javascript here so that pages load faster #}
</head>
{% endspaceless %}
- <body class="{% block body_class %}{% endblock %}{% if page_class %} {{page_class}}{% endif %}">
- {% include "blocks/system_messages.html" %}
+ <body class="{% block body_class %}{% endblock %}{% if user_messages %} user-messages{% endif %}{% if page_class %} {{page_class}}{% endif %}">
+ {% include "widgets/system_messages.html" %}
{% include "custom_header.html" ignore missing %}
- {% include "blocks/header.html" %}
+ {% include "widgets/header.html" %} {# Logo, user tool navigation and meta navitation #}
+ {% include "widgets/secondary_header.html" %} {# Scope selector, search input and ask button #}
<div class="content-wrapper">
{% block body %}
{% endblock %}
</div>
{% if settings.FOOTER_MODE == 'default' %}
- {% include "blocks/footer.html" %}
+ {% include "widgets/footer.html" %}
{% elif settings.FOOTER_MODE == 'customize' %}
{{ settings.CUSTOM_FOOTER }}
{% endif %}
{% include "custom_footer.html" ignore missing %}
- {% include "blocks/bottom_scripts.html" %}
+ {% include "meta/bottom_scripts.html" %}
{% block endjs %}
{% endblock %}
<script type="text/javascript">
diff --git a/askbot/skins/default/templates/blocks/bottom_scripts.html b/askbot/skins/default/templates/blocks/bottom_scripts.html
deleted file mode 100644
index 06246100..00000000
--- a/askbot/skins/default/templates/blocks/bottom_scripts.html
+++ /dev/null
@@ -1,96 +0,0 @@
-{# most, if not all javascripts should go here
- this template is included at the very bottow of the
- main template "base.html"
-#}
-<div id="no-javascript">
- <noscript class="noscript">
- {% trans app_name = settings.APP_SHORT_NAME %}Please note: {{app_name}} requires javascript to work properly, please enable javascript in your browser, <a href="{{noscript_url}}">here is how</a>{% endtrans %}
- </noscript>
-</div>
-<script type="text/javascript">
- var i18nLang = '{{settings.LANGUAGE_CODE}}';
- 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']['user_signin'] = '{{ settings.LOGIN_URL }}';
-</script>
-<script
- type="text/javascript"
- {% if settings.DEBUG %}
- src="{{"/js/jquery-1.4.3.js"|media}}"
- {% else %}
- src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"
- {% endif %}
-></script>
-<script type='text/javascript' src="{{"/js/i18n.js"|media }}"></script>
-<script type='text/javascript' src="{{"/js/jquery.i18n.js"|media }}"></script>
-<script type='text/javascript' src="{% url "askbot_jsi18n" %}"></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({
- extensions: ["tex2jax.js"],
- jax: ["input/TeX","output/HTML-CSS"],
- tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
- });
- </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;
- }
- );
- //{# focus input on the search bar endcomment #}
- {% if active_tab != "ask" %}
- $('#keywords').focus();
- {% else %}
- $('#id_title').focus();
- {% endif %}
- animateHashes();
- });
-{% endif %}
-{% if user_messages %}
- $('#validate_email_alert').click(function(){notify.close(true)})
- notify.show();
-{% endif %}
-</script>
-{% if settings.USE_CUSTOM_JS %}
-<script
- src="{% url "custom_js"%}?{{ settings.MEDIA_RESOURCE_REVISION }}"
- type="text/javascript"
-></script>
-{% endif %}
-{% if settings.GOOGLE_ANALYTICS_KEY %}
-<script type="text/javascript">
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
- </script>
- <script type="text/javascript">
- try {
- var pageTracker = _gat._getTracker('{{ settings.GOOGLE_ANALYTICS_KEY }}');
- pageTracker._trackPageview();
- } catch(err) {}
-</script>
-{% endif %}
diff --git a/askbot/skins/default/templates/faq.html b/askbot/skins/default/templates/faq.html
index be25d2ee..51873a06 100644
--- a/askbot/skins/default/templates/faq.html
+++ b/askbot/skins/default/templates/faq.html
@@ -3,6 +3,7 @@
{% block title %}{% spaceless %}{% trans %}FAQ{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<div class="content">
+<h1 class="section-title">FAQ</h1>
{{forum_faq}}
</div>
{% endblock %}
diff --git a/askbot/skins/default/templates/feedback.html b/askbot/skins/default/templates/feedback.html
index d5e8b3a7..85b5d00a 100644
--- a/askbot/skins/default/templates/feedback.html
+++ b/askbot/skins/default/templates/feedback.html
@@ -2,7 +2,12 @@
<!-- template feedback.html -->
{% block title %}{% spaceless %}{% trans %}Feedback{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>{% trans %}Give us your feedback!{% endtrans %}</h1>
+<h1 class="section-title">{% trans %}Give us your feedback!{% endtrans %}</h1>
+{% if form.errors %}
+<span class="error">
+ {{form.errors.__all__}}
+</span>
+{%endif%}
<form method="post" action="{% url feedback %}" accept-charset="utf-8">{% csrf_token %}
{% if user.is_authenticated() %}
<p class="message">
@@ -22,10 +27,18 @@
<div class="form-row">
<label>{{form.email.label}}
{% if form.errors.email %}
- <span class='error'>{% trans %}(please enter a valid email){% endtrans %}</span>
+ <span class='error'>{% trans %}(to hear from us please enter a valid email or check the box below){% endtrans %}</span>
{% endif %}
</label><br/>{{form.email}}
</div>
+ <div class="form-row">
+ <label>{{form.no_email.label}}
+ {% if form.errors.no_email %}
+ <span class="error">{% trans %}(this field is required){% endtrans %}</span>
+ {% endif %}
+ {{form.no_email}}
+ </label>
+ </div>
{% endif %}
<div class="form-row">
<label>{{form.message.label}}
@@ -36,10 +49,19 @@
<br/>
{{form.message}}
</div>
+ {% if form.recaptcha %}
+ <div class="form-row">
+ {% if form.errors.recaptcha%}
+ <span class="error">{% trans %}(Please solve the captcha){% endtrans %}</span>
+ </label>
+ {% endif %}
+ {{form.recaptcha}}
+ </div>
+ {% endif %}
{{form.next}}
<div class="submit-row">
<input type="submit" class="submit" value="{% trans %}Send Feedback{% endtrans %}"/>&nbsp;
- <input type="submit" class="submit" name="cancel" value="{% trans %}Cancel{% endtrans %}"/>
+ <input type="submit" class="submit cancel" name="cancel" value="{% trans %}Cancel{% endtrans %}"/>
</div>
</form>
{% endblock %}
diff --git a/askbot/skins/default/templates/macros.html b/askbot/skins/default/templates/macros.html
index 360e4558..a51b6bc4 100644
--- a/askbot/skins/default/templates/macros.html
+++ b/askbot/skins/default/templates/macros.html
@@ -1,25 +1,4 @@
{% load extra_filters %}
-{%- macro user_score_and_badge_summary(user) -%}
- <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 %}
- </span>
- {% endif %}
-{%- endmacro -%}
{%- macro share(site = None, site_label = None, icon = False) -%}
<a class="{{ site }}-share{% if icon == True %} icon{% endif %}"
@@ -44,188 +23,30 @@
</div>
{%- endmacro -%}
-{%- macro follow_user_toggle(visitor = None, subject = None) -%}
- {% if visitor.is_anonymous() %}
- {{ follow_toggle(True, 'user', subject.username, subject.id) }}
+{%- 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 %}
- {% if visitor != subject %}
- {% if visitor.is_following(subject) %}
- {{ follow_toggle(False, 'user', subject.username, subject.id) }}
- {% else %}
- {{ follow_toggle(True, 'user', subject.username, subject.id) }}
- {% endif %}
- {% endif %}
- {% endif %}
-{%- endmacro -%}
-
-{%- macro user_long_score_and_badge_summary(user) -%}
- <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 -%}
- </span></a>
- {%- endif -%}
-{%- endmacro -%}
-
-{%- macro user_country_flag(user) -%}
- {% if user.country and user.show_country %}
- <img class="flag"
- src="{{ ('/images/flags/' ~ user.country.code|lower ~ '.gif')|media }}"
- alt="{% trans
- country=user.country.name
- %}flag of {{country}}{%
- endtrans %}"
- title="{% trans
- country=user.country.name,
- person=user.username %}{{person}} is from {{country}}{%
- endtrans %}"
- />
- {% endif %}
-{%- endmacro -%}
-
-{%- macro user_country_name_and_flag(user) -%}
- {% if user.country and user.show_country %}
- {{ user.country.name }}
- {{ user_country_flag(user) }}
- {% endif %}
-{%- endmacro -%}
-
-{%- macro user_full_location(user) -%}
- {% if user.location %}
- {{ user.location }},
- {% endif %}
- {{ user_country_name_and_flag(user) }}
-{%- endmacro -%}
-
-{%- macro user_list(users, profile_section = None) -%}
-<div class="userList">
- <table class="list-table">
- <tr>
- <td class="list-td">
- {% for user in users %}
- <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>
- </ul>
- </div>
- {% if loop.index is divisibleby 7 %}
- </td>
- <td>
- {% endif %}
- {% endfor %}
- </td>
- </tr>
- </table>
-</div>
-{%- endmacro -%}
-
-{%- macro paginator(p, position='left', active_tab='') -%}{# 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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ p.previous }}/{{ p.extend_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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" title="{% trans %}page number {{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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" title="{% trans %}page number {{ num }}{% endtrans %}">{{ num }}</a></span>
- {% endfor %}
- {% endif %}
- {% if p.has_next %}
- <span class="next"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ p.next }}/{{ p.extend_url }}" title="{% trans %}next page{% endtrans %}">{% trans %}next page{% endtrans %} &raquo;</a></span>
- {% endif %}
- </div>
+ title="{% trans %}i like this answer (click again to cancel){% endtrans %}"
{% 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="{% url questions %}{{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="{% url questions %}{{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="{% url questions %}{{p.base_url}}page_size:50/">50</a></span>
- {% endif %}
- </div>
-{% endif %}
-{% endspaceless %}
-{%- endmacro -%}
-
-{#todo: rename this to avatar #}
-{%- macro gravatar(user, size) -%}
-{% spaceless %}
-<a style="text-decoration:none"
- href="{{ user.get_absolute_url() }}"
-><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 %}"
-/></a>
-{% endspaceless %}
-{%- endmacro -%}
-
-{%- macro user_website_link(user, max_display_length=25) -%}
- {% if user.website %}
- <a
- href="{{user.website}}"
- title="{% trans username=user.username|escape, url=user.website %}{{username}}'s website is {{url}}{% endtrans %}"
- {% if user.can_have_strong_url() == False %}
- rel="nofollow"
- {% endif %}
- >
- {{user.website|truncate(length=max_display_length, killwords=True, end='...')}}
- </a>
+/></div>
+<div
+ id="{{post.post_type}}-vote-number-{{ post.id }}"
+ class="vote-number"
+ title="{% trans %}current number of votes{% endtrans %}"
+>{{ 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>
{%- endmacro -%}
{%- macro post_contributor_avatar_and_credentials(post, user) -%}
@@ -256,7 +77,7 @@ poor design of the data or methods on data objects #}
{% endif %}
<strong>{{post.added_at|diff_date}}</strong>
</p>
- <img
+ <img width="35" height="35"
src="{{'/images/wiki.png'|media}}"
alt="{% trans %}this post is marked as community wiki{% endtrans %}"
style="float:left"
@@ -311,6 +132,25 @@ poor design of the data or methods on data objects #}
{% 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}}
@@ -328,13 +168,15 @@ poor design of the data or methods on data objects #}
{%- endmacro -%}
{%- macro tag_list_widget(
- tags,
- id = None,
- deletable = False,
- make_links = True,
- url_params = None,
- css_class = None
- )
+ tags,
+ id = None,
+ deletable = False,
+ make_links = True,
+ url_params = None,
+ css_class = None,
+ tag_css_class = None,
+ tag_html_tag = 'li'
+ )
-%}
<ul {% if id %}id="{{ id }}"{% endif %}
class="tags{% if css_class %} {{css_class}}{% endif %}"
@@ -343,10 +185,11 @@ poor design of the data or methods on data objects #}
{% for tag in tags %}
{{ tag_widget(
tag,
+ css_class = tag_css_class,
deletable = deletable,
is_link = make_links,
url_params = url_params,
- html_tag = 'li'
+ html_tag = tag_html_tag
)}}
{% endfor %}
{% endif %}
@@ -374,7 +217,7 @@ poor design of the data or methods on data objects #}
title="{% trans %}see questions tagged '{{ tag }}'{% endtrans %}"
{% endif %}
rel="tag"
- >{{ tag|replace('*', '&#10045;') }}</{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %}>
+ >{{ tag|replace('*', '&#10045;')|truncate(20,True)}}</{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %}>
{% if deletable %}
<span class="delete-icon"
{% if delete_link_title %}
@@ -406,62 +249,7 @@ poor design of the data or methods on data objects #}
{%- endmacro -%}
{%- macro question_summary(question, extra_class=None, query_string=None) -%}
- <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 -%}
- no-views
- {% else -%}
- some-views
- {%- endif -%}">
- <span class="item-count">{{question.view_count|humanize_counter}}</span>
- <div>
- {% trans cnt=question.view_count %}view{% pluralize %}views{% endtrans %}
- </div>
- </div>
- <div class="answers
- {% if question.answer_count == 0 -%}
- no-answers
- {% else -%}
- {%- if question.answer_accepted -%}
- accepted
- {%- else -%}
- some-answers
- {%- endif -%}
- {%- endif -%}">
- <span
- class="item-count"
- >{{question.answer_count|humanize_counter}}{% if question.answer_accepted%}&#10003;{% endif %}</span>
- <div>
- {% trans cnt=question.answer_count %}answer{% pluralize %}answers{% endtrans %}
- </div>
- </div>
- <div class="votes
- {% if question.score == 0 -%}
- no-votes
- {% else -%}
- some-votes
- {%- endif -%}">
- <span class="item-count">{{question.score|humanize_counter}}</span>
- <div>
- {% 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>
- {% if question.is_anonymous %}
- <span class="anonymous">{{ question.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)}#}
- {% endif %}
- </div>
- </div>
- <h2><a href="{{ question.get_absolute_url() }}" onmouseover="load_question_body(this, {{question.id}})">{{question.get_question_title()|escape}}</a></h2>
- {{ tag_list_widget(question.get_tag_names(), url_params=query_string) }}
- </div>
+{%include "widgets/question_summary.html" %}
{%- endmacro -%}
{%- macro comment_votes(comment = None) -%}
@@ -494,7 +282,7 @@ for the purposes of the AJAX comment editor #}
>{{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>
+ &nbsp;<a class="edit">{% trans %}edit{% endtrans %}</a>
{% endif %}
</div>
</div>
@@ -524,14 +312,25 @@ for the purposes of the AJAX comment editor #}
{% endif %}
{%- endmacro -%}
-{%- macro post_comments_widget(post=None, show_post = None, show_comment = None, comment_order_number = None, user=None, max_comments=None) -%}
+{%- macro post_comments_widget(
+ post=None,
+ show_post = None,
+ show_comment = None,
+ show_comment_position = None,
+ user=None,
+ max_comments=None
+ )
+-%}
{% spaceless %}
+ {% if post.comment_count > 0 %}
+ <h2 id="comment-title">Comments</h2>
+ {% 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 comment_order_number > max_comments %}
- {% set comments = post.get_comments(visitor = user)[:comment_order_number] %}
+ {% 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] %}
@@ -545,12 +344,12 @@ for the purposes of the AJAX comment editor #}
<div class="controls">
{% set can_post = user|can_post_comment(post) %}
{% if show_post == post and show_comment %}
- {% if comment_order_number > max_comments %}
+ {% if show_comment_position > max_comments %}
{{
add_or_show_comments_button(
post = post,
can_post = can_post,
- max_comments = comment_order_number,
+ max_comments = show_comment_position,
widget_id = widget_id
)
}}
@@ -633,67 +432,189 @@ for the purposes of the AJAX comment editor #}
edit_title = False
)
-%}
- {% if edit_title %}
- <div class="form-item">
- <label for="id_title" ><strong>{{ post_form.title.label_tag() }}:</strong></label> <span class="form-error"></span><br/>
- {{ post_form.title }} {{ post_form.title.errors }}
- <div class="title-desc">
- {{ post_form.title.help_text }}
- </div>
+{%include "widgets/edit_post.html" %}
+{%- endmacro -%}
+
+{%- macro tag_autocomplete_js(id = '#id_tags') -%}
+ var tagAc = new AutoCompleter({
+ url: '{% url "get_tag_list" %}',
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: true,
+ maxCacheLength: 100,
+ delay: 10
+ });
+ tagAc.decorate($("{{ id }}"));
+{%- 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 -%}
+{%- endmacro -%}
+
+{%- macro user_score_and_badge_summary(user) -%}
+ {%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 }}"
+ >
+ {% 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 %}
- <div id="wmd-button-bar" class="wmd-panel"></div>
- <div class="form-item">
- {{ post_form.text }}{# this element is resizable and will be wrapped by js #}
- <label for="editor" class="form-error">{{ post_form.text.errors }}</label>
+ {% endif %}
</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'
- )
- }}
+{%- endmacro -%}
+
+{%- macro follow_user_toggle(visitor = None, subject = None) -%}
+ {% if visitor.is_anonymous() %}
+ {{ follow_toggle(True, 'user', subject.username, subject.id) }}
+ {% else %}
+ {% if visitor != subject %}
+ {% if visitor.is_following(subject) %}
+ {{ follow_toggle(False, 'user', subject.username, subject.id) }}
{% else %}
- <label for="id_tags">
- <strong>{% trans %}tags{% endtrans %}:</strong>
- {% trans %}(required){% endtrans %}
- </label>
+ {{ follow_toggle(True, 'user', subject.username, subject.id) }}
{% endif %}
- <span class="form-error">{{ post_form.tags.errors }}</span><br/>
- {{ post_form.tags }}
- <div class="title-desc">
- {{ post_form.tags.help_text }}
- </div>
- </div>
+ {% endif %}
{% endif %}
- {% if 'summary' in post_form['fields'] %}
- <div class="form-item">
- <strong>{{ post_form.summary.label_tag() }}</strong> <br/>
- {{ post_form.summary }}
- <div class="title-desc">
- {{ post_form.summary.help_text }}
- </div>
- <div class="form-error" >{{ post_form.summary.errors }}</div>
- </div>
+{%- endmacro -%}
+
+{%- macro user_long_score_and_badge_summary(user) -%}
+ {% include "widgets/user_long_score_and_badge_summary.html" %}
+{%- endmacro -%}
+
+{%- macro user_country_flag(user) -%}
+ {% if user.country and user.show_country %}
+ <img class="flag"
+ src="{{ ('/images/flags/' ~ user.country.code|lower ~ '.gif')|media }}"
+ alt="{% trans
+ country=user.country.name
+ %}flag of {{country}}{%
+ endtrans %}"
+ title="{% trans
+ country=user.country.name,
+ person=user.username %}{{person}} is from {{country}}{%
+ endtrans %}"
+ />
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro user_country_name_and_flag(user) -%}
+ {% if user.country and user.show_country %}
+ {{ user.country.name }}
+ {{ user_country_flag(user) }}
{% endif %}
- <div class="preview-toggle">
- <span
- id="pre-collapse"
- title="{% trans %}Toggle the real time Markdown editor preview{% endtrans %}"
+{%- endmacro -%}
+
+{%- macro user_full_location(user) -%}
+ {% if user.location %}
+ {{ user.location }},
+ {% endif %}
+ {{ user_country_name_and_flag(user) }}
+{%- endmacro -%}
+
+{%- macro user_list(users, profile_section = None) -%}
+{% include "widgets/user_list.html"%}
+{%- endmacro -%}
+
+{#todo: rename this to avatar #}
+{%- macro gravatar(user, size) -%}
+{% spaceless %}
+<a style="text-decoration:none"
+ href="{{ user.get_absolute_url() }}"
+><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 %}"
+/></a>
+{% endspaceless %}
+{%- endmacro -%}
+
+{%- macro user_website_link(user, max_display_length=25) -%}
+ {% if user.website %}
+ <a
+ href="{{user.website}}"
+ title="{% trans username=user.username|escape, url=user.website %}{{username}}'s website is {{url}}{% endtrans %}"
+ {% if user.can_have_strong_url() == False %}
+ rel="nofollow"
+ {% endif %}
>
- [{% trans %}hide preview{% endtrans %}]
- </span>
- </div>
- <div id="previewer" class="wmd-preview"></div>
+ {{user.website|truncate(length=max_display_length, killwords=True, end='...')}}
+ </a>
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro paginator(p, position='left') -%}{# 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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ p.previous }}/{{ p.extend_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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" title="{% trans %}page number {{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="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" title="{% trans %}page number {{ num }}{% endtrans %}">{{ num }}</a></span>
+ {% endfor %}
+ {% endif %}
+ {% if p.has_next %}
+ <span class="next"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ p.next }}/{{ p.extend_url }}" 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="{% url questions %}{{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="{% url questions %}{{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="{% url questions %}{{p.base_url}}page_size:50/">50</a></span>
+ {% endif %}
+ </div>
+{% endif %}
+{% endspaceless %}
{%- endmacro -%}
{%- macro inbox_link(user) -%}
@@ -737,16 +658,3 @@ for the purposes of the AJAX comment editor #}
</a>
{% endif %}
{%- endmacro -%}
-
-{%- macro tag_autocomplete_js(id = '#id_tags') -%}
- var tagAc = new AutoCompleter({
- url: '{% url "get_tag_list" %}',
- preloadData: true,
- minChars: 1,
- useCache: true,
- matchInside: true,
- maxCacheLength: 100,
- delay: 10
- });
- tagAc.decorate($("{{ id }}"));
-{%- endmacro -%}
diff --git a/askbot/skins/default/templates/main_page/content.html b/askbot/skins/default/templates/main_page/content.html
index 55598ff6..07a50c77 100644
--- a/askbot/skins/default/templates/main_page/content.html
+++ b/askbot/skins/default/templates/main_page/content.html
@@ -1,17 +1,3 @@
-{% import "macros.html" as macros %}
<div id="question-list">
-{% 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, query_string=query_string)}}
- {% endfor %}
-{% endcache %}
-{# comment todo: fix css here #}
-{% if questions_count == 0 %}
- {% include "main_page/nothing_found.html" %}
-{% else %}
- <p class="evenMore" style="padding-left:9px">
- {% trans %}Did not find what you were looking for?{% endtrans %}
- <a href="{% url ask %}">{% trans %}Please, post your question!{% endtrans %}</a>
- </p>
-{% endif %}
+ {% include "main_page/questions_loop.html" %}
</div>
diff --git a/askbot/skins/default/templates/main_page/headline.html b/askbot/skins/default/templates/main_page/headline.html
index a2132df3..444787e6 100644
--- a/askbot/skins/default/templates/main_page/headline.html
+++ b/askbot/skins/default/templates/main_page/headline.html
@@ -1,31 +1,26 @@
{% import "macros.html" as macros %}
{% if questions_count > 0 %}
- <div style="clear:both">
- <p class="rss">
- (<a
- href="{{settings.APP_URL}}/feeds/rss/"
- title="{% trans %}subscribe to the questions feed{% endtrans %}"
- >{% trans %}rss feed{% endtrans %}</a>)
- </p>
- <h1 id="question-count" class="search-result-summary">
- {% if search_tags %}
- {% trans cnt=questions_count, q_num=questions_count|intcomma %}{{q_num}} question, tagged{% pluralize %}{{q_num}} questions, tagged{% endtrans %}
- {% else %}
+ <h1 id="questionCount" class="search-result-summary">
{% trans cnt=questions_count, q_num=questions_count|intcomma %}{{q_num}} question{% pluralize %}{{q_num}} questions{% endtrans %}
- {% endif %}
{% if author_name %}
{% trans %}with {{author_name}}'s contributions{% endtrans %}
{% endif %}
</h1>
- {{ macros.tag_list_widget(
- search_tags,
- id = 'search-tags',
- deletable = True,
- make_links = False
- )
- }}
+ <div class="clearfix"></div>
+ {% if search_tags %}
+ <div id="listSearchTags">
+ <span class="left">Tagged</span>
+ {{ macros.tag_list_widget(
+ search_tags,
+ id = 'searchTags',
+ deletable = True,
+ make_links = False
+ )
+ }}
+ </div>
+ {% endif %}
{% if author_name or search_tags or query %}
- <p class="search-tips">{% trans %}Search tips:{% endtrans %}
+ <p class="search-tips"><b>{% trans %}Search tips:{% endtrans %}</b>
{% if reset_method_count > 1 %}
{% if author_name %}
<a href="{% url questions %}{{ query_string|remove_from_url('author') }}">{% trans %}reset author{% endtrans %}</a>
@@ -42,7 +37,6 @@
{% trans %} - to expand, or dig in by adding more tags and revising the query.{% endtrans %}
</p>
{% else %}
- <p class="search-tips">{% trans %}Search tip:{% endtrans %} {% trans %}add tags and a query to focus your search{% endtrans %}</p>
+ <p class="search-tips"><b>{% trans %}Search tip:{% endtrans %}</b> {% trans %}add tags and a query to focus your search{% endtrans %}</p>
{% endif %}
- </div>
{% endif %}
diff --git a/askbot/skins/default/templates/main_page/javascript.html b/askbot/skins/default/templates/main_page/javascript.html
index 2232164e..e726d5b4 100644
--- a/askbot/skins/default/templates/main_page/javascript.html
+++ b/askbot/skins/default/templates/main_page/javascript.html
@@ -34,8 +34,13 @@
askbot['urls']['unmark_tag'] = scriptUrl + '{% 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 }}';
</script>
<script type='text/javascript' src='{{"/js/editor.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 6a5b744a..8e7624cc 100644
--- a/askbot/skins/default/templates/main_page/nothing_found.html
+++ b/askbot/skins/default/templates/main_page/nothing_found.html
@@ -5,7 +5,7 @@
{% endif %}
{% if scope == "favorite" %}
{% trans %}No questions here. {% endtrans %}
- {% trans %}Please star (bookmark) some questions or follow some users.{% endtrans %}
+ {% trans %}Please follow some questions or follow some users.{% endtrans %}
{% endif %}
</p>
{% if query or search_tags or author_name %}
diff --git a/askbot/skins/default/templates/main_page/paginator.html b/askbot/skins/default/templates/main_page/paginator.html
index dd52e019..6766261b 100644
--- a/askbot/skins/default/templates/main_page/paginator.html
+++ b/askbot/skins/default/templates/main_page/paginator.html
@@ -3,5 +3,6 @@
<div id="pager" class="pager">
{{ macros.paginator(context|setup_paginator, position='left', active_tab=active_tab) }}
{{ macros.pagesize_switch(context, position='right') }}
+ <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
new file mode 100644
index 00000000..8e6c0492
--- /dev/null
+++ b/askbot/skins/default/templates/main_page/questions_loop.html
@@ -0,0 +1,16 @@
+{% 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, query_string=query_string)}}
+ {% endfor %}
+{% endcache %}
+{# comment todo: fix css here #}
+{% if questions_count == 0 %}
+ {% include "main_page/nothing_found.html" %}
+{% else %}
+ <div class="evenMore">
+ {% trans %}Did not find what you were looking for?{% endtrans %}
+ <a href="{% url ask %}">{% trans %}Please, post your question!{% endtrans %}</a>
+ </div>
+{% endif %}
+
diff --git a/askbot/skins/default/templates/main_page/sidebar.html b/askbot/skins/default/templates/main_page/sidebar.html
index 0985547f..c89d62f4 100644
--- a/askbot/skins/default/templates/main_page/sidebar.html
+++ b/askbot/skins/default/templates/main_page/sidebar.html
@@ -3,45 +3,15 @@
{{ settings.SIDEBAR_MAIN_HEADER }}
{% if contributors and settings.SIDEBAR_MAIN_SHOW_AVATARS %}
- {% cache 600 "contributors" contributors search_tags scope sort query context.page context.page_size language_code %}
- <div id="contrib-users" class="boxC">
- <h2>{% trans %}Contributors{% endtrans %}</h2>
- {% spaceless %}
- {% for person in contributors %}
- {{ macros.gravatar(person,48) }}
- {% endfor %}
- {% endspaceless %}
- </div>
- {% endcache %}
+ {% include "widgets/contributors.html" %}
{% endif %}
{% if request.user.is_authenticated() and settings.SIDEBAR_MAIN_SHOW_TAG_SELECTOR %}
- {% include "blocks/tag_selector.html" %}
+ {% include "widgets/tag_selector.html" %}
{% endif %}
{% if tags and settings.SIDEBAR_MAIN_SHOW_TAGS %}
- {% cache 0 "tags" tags search_tags scope sort query context.page context.page_size language_code %}
- <div class="boxC">
- <h2>{% trans %}Related tags{% endtrans %}</h2>
- {% if tag_list_type == 'list' %}
- <ul id="related-tags" class="tags">
- {% for tag in tags %}
- <li>
- {{ macros.tag_widget(
- tag.name,
- html_tag = 'div',
- extra_content = '<span class="tag-number">&#215; ' ~
- tag.local_used_count|intcomma ~ '</span>',
- url_params = query_string,
- )}}
- </li>
- {% endfor %}
- </ul>
- {% else %}
- {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }}
- {% endif %}
- </div>
- {% endcache %}
+ {% include "widgets/related_tags.html" %}
{% endif %}
{{ settings.SIDEBAR_MAIN_FOOTER }}
diff --git a/askbot/skins/default/templates/main_page/tab_bar.html b/askbot/skins/default/templates/main_page/tab_bar.html
index feefb59c..1802640f 100644
--- a/askbot/skins/default/templates/main_page/tab_bar.html
+++ b/askbot/skins/default/templates/main_page/tab_bar.html
@@ -1,29 +1,18 @@
{% import "macros.html" as macros %}
{% load extra_filters %}
-{% cache 600 "scope_sort_tabs" search_tags request.user scope sort query context.page context.page_size language_code %}
+{% cache 0 "scope_sort_tabs" search_tags request.user scope sort query context.page context.page_size language_code %}
+<a class="rss"
+ {% if feed_url %}
+ href="{{settings.APP_URL}}{{feed_url}}"
+ {% else %}
+ href="{{settings.APP_URL}}/feeds/rss/"
+ {% endif %}
+ title="{% trans %}subscribe to the questions feed{% endtrans %}"
+ >{% trans %}RSS{% endtrans %}
+</a>
<div class="tabBar">
- <div id="section_tabs" class="tabsC">
- <span class="label">{% trans %}In:{% endtrans %}</span>
- <a id="all"
- class="{% if scope == 'all' %}on{% else %}off{% endif %}"
- href="{% url questions %}{{ query_string|replace_in_url("section:all")|replace_in_url("sort:activity-desc") }}"
- title="{% trans %}see all questions{% endtrans %}"
- ><span>{% trans %}all{% endtrans %}</span></a>
- <a id="unanswered"
- class="{% if scope == 'unanswered' %}on{% else %}off{% endif %}"
- href="{% url questions %}{{ query_string|replace_in_url("section:unanswered")|replace_in_url("sort:answers-asc") }}"
- title="{% trans %}see unanswered questions{% endtrans %}"
- ><span>{% trans %}unanswered{% endtrans %}</span></a>
- {% if request.user.is_authenticated() %}
- <a id="favorite"
- class="{% if scope == 'favorite' %}on{% else %}off{% endif %}"
- href="{% url questions %}{{ query_string|replace_in_url("section:favorite") }}"
- title="{% trans %}see your followed questions{% endtrans %}"
- ><span>{% trans %}followed{% endtrans %}</span></a>
- {% endif %}
- </div>
<div id="sort_tabs" class="tabsA">
- <span class="label">{% trans %}Sort by:{% endtrans %}</span>
+ <span class="label">{% trans %}Sort by &raquo;{% endtrans %}</span>
{% if show_sort_by_relevance %}
{% set asc_relevance_tooltip = gettext('most relevant questions') %}
{% set desc_relevance_tooltip = gettext('click to see most relevant questions') %}
@@ -86,6 +75,8 @@
query_string = query_string,
)
}}
+
</div>
</div>
+
{% endcache %}
diff --git a/askbot/skins/default/templates/meta/bottom_scripts.html b/askbot/skins/default/templates/meta/bottom_scripts.html
new file mode 100644
index 00000000..0df25e7c
--- /dev/null
+++ b/askbot/skins/default/templates/meta/bottom_scripts.html
@@ -0,0 +1,94 @@
+{# most, if not all javascripts should go here
+ this template is included at the very bottow of the
+ main template "base.html"
+#}
+<div id="no-javascript">
+ <noscript class="noscript">
+ {% trans app_name = settings.APP_SHORT_NAME %}Please note: {{app_name}} requires javascript to work properly, please enable javascript in your browser, <a href="{{noscript_url}}">here is how</a>{% endtrans %}
+ </noscript>
+</div>
+<script type="text/javascript">
+ var i18nLang = '{{settings.LANGUAGE_CODE}}';
+ 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']['user_signin'] = '{{ settings.LOGIN_URL }}';
+</script>
+<script
+ type="text/javascript"
+ {% if settings.DEBUG %}
+ src="{{"/js/jquery-1.4.3.js"|media}}"
+ {% else %}
+ src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"
+ {% endif %}
+></script>
+<script type='text/javascript' src="{{"/js/utils.js"|media }}"></script>
+<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
+{% if settings.ENABLE_MATHJAX %}
+ <script type='text/javascript' src="{{settings.MATHJAX_BASE_URL}}/MathJax.js">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+ tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+ });
+ </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;
+ }
+ );
+ //{# focus input on the search bar endcomment #}
+ {% if active_tab != "ask" %}
+ $('#keywords').focus();
+ {% else %}
+ $('#id_title').focus();
+ {% endif %}
+ animateHashes();
+ });
+{% endif %}
+{% if user_messages %}
+ $('#validate_email_alert').click(function(){notify.close(true)})
+ notify.show();
+{% endif %}
+</script>
+{% if settings.USE_CUSTOM_JS %}
+<script
+ src="{% url "custom_js"%}?{{ settings.MEDIA_RESOURCE_REVISION }}"
+ type="text/javascript"
+></script>
+{% endif %}
+{% if settings.GOOGLE_ANALYTICS_KEY %}
+<script type="text/javascript">
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+ </script>
+ <script type="text/javascript">
+ try {
+ var pageTracker = _gat._getTracker('{{ settings.GOOGLE_ANALYTICS_KEY }}');
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+{% endif %}
diff --git a/askbot/skins/default/templates/blocks/editor_data.html b/askbot/skins/default/templates/meta/editor_data.html
index 79ed96fb..79ed96fb 100644
--- a/askbot/skins/default/templates/blocks/editor_data.html
+++ b/askbot/skins/default/templates/meta/editor_data.html
diff --git a/askbot/skins/default/templates/meta/html_head_javascript.html b/askbot/skins/default/templates/meta/html_head_javascript.html
new file mode 100644
index 00000000..f960d11d
--- /dev/null
+++ b/askbot/skins/default/templates/meta/html_head_javascript.html
@@ -0,0 +1,10 @@
+<script type="text/javascript">
+ var askbot = {};
+ askbot['data'] = {};
+ 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_meta.html b/askbot/skins/default/templates/meta/html_head_meta.html
new file mode 100644
index 00000000..352ffb53
--- /dev/null
+++ b/askbot/skins/default/templates/meta/html_head_meta.html
@@ -0,0 +1,8 @@
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+{% block meta_description %}
+<meta name="description" content="{{settings.APP_DESCRIPTION|escape}}" />
+{% endblock %}
+<meta name="keywords" content="{%block keywords%}{%endblock%},{{settings.APP_KEYWORDS|escape}}" />
+{% if settings.GOOGLE_SITEMAP_CODE %}
+<meta name="google-site-verification" content="{{settings.GOOGLE_SITEMAP_CODE}}" />
+{% endif %}
diff --git a/askbot/skins/default/templates/meta/html_head_stylesheets.html b/askbot/skins/default/templates/meta/html_head_stylesheets.html
new file mode 100644
index 00000000..14f3c106
--- /dev/null
+++ b/askbot/skins/default/templates/meta/html_head_stylesheets.html
@@ -0,0 +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'>
+{{ skin.get_extra_css_link() }}
+{% if settings.USE_CUSTOM_CSS %}
+ <link
+ href="{% url "custom_css" %}?v={{settings.MEDIA_RESOURCE_REVISION}}"
+ rel="stylesheet"
+ type="text/css"
+ />
+{% endif %}
diff --git a/askbot/skins/default/templates/blocks/mandatory_tags_js.html b/askbot/skins/default/templates/meta/mandatory_tags_js.html
index f04a6345..f04a6345 100644
--- a/askbot/skins/default/templates/blocks/mandatory_tags_js.html
+++ b/askbot/skins/default/templates/meta/mandatory_tags_js.html
diff --git a/askbot/skins/default/templates/privacy.html b/askbot/skins/default/templates/privacy.html
index 61f4d945..e9b6f58b 100644
--- a/askbot/skins/default/templates/privacy.html
+++ b/askbot/skins/default/templates/privacy.html
@@ -1,8 +1,8 @@
-{% extends "one_column_body.html" %}
+{% extends "two_column_body.html" %}
<!-- privacy.html -->
{% block title %}{% spaceless %}{% trans %}Privacy policy{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>{% trans %}Privacy policy{% endtrans %}</h1>
+<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 948bac27..7dc85d84 100644
--- a/askbot/skins/default/templates/question.html
+++ b/askbot/skins/default/templates/question.html
@@ -1,5 +1,4 @@
{% extends "two_column_body.html" %}
-{% import "macros.html" as macros %}
<!-- question.html -->
{% block title %}{% spaceless %}{{ question.get_question_title() }}{% endspaceless %}{% endblock %}
{% block meta_description %}
@@ -11,579 +10,12 @@
<link rel="stylesheet" type="text/css" href="{{'/js/wmd/wmd.css'|media}}" />
{% endblock %}
{% block content %}
-<h1><a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a></h1>
-<table style="width:100%;" id="question-table" {% if question.deleted %}class="deleted"{%endif%}>
- <tr>
- <td style="width:30px;vertical-align:top">
- <div class="vote-buttons">
- {% if question_vote %}
- <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote"
- {% if question_vote.is_upvote() %}
- src="{{'/images/vote-arrow-up-on.png'|media}}"
- {% else %}
- src="{{'/images/vote-arrow-up.png'|media}}"
- {% endif %}
- alt="{% trans %}i like this post (click again to cancel){% endtrans %}"
- title="{% trans %}i like this post (click again to cancel){% endtrans %}" />
- <div id="question-vote-number-{{ question.id }}" class="vote-number"
- title="{% trans %}current number of votes{% endtrans %}">
- {{ question.score }}
- </div>
- <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote"
- {% if question_vote.is_downvote() %}
- src="{{'/images/vote-arrow-down-on.png'|media}}"
- {% else %}
- src="{{'/images/vote-arrow-down.png'|media}}"
- {% endif %}
- alt="{% trans %}i dont like this post (click again to cancel){% endtrans %}"
- title="{% trans %}i dont like this post (click again to cancel){% endtrans %}" />
- {% else %}
- <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote"
- alt="{% trans %}i like this post (click again to cancel){% endtrans %}"
- src="{{'/images/vote-arrow-up.png'|media}}"
- title="{% trans %}i like this post (click again to cancel){% endtrans %}" />
- <div id="question-vote-number-{{ question.id }}" class="vote-number"
- title="{% trans %}current number of votes{% endtrans %}">
- {{ question.score }}
- </div>
- <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote"
- src="{{'/images/vote-arrow-down.png'|media}}"
- alt="{% trans %}i dont like this post (click again to cancel){% endtrans %}"
- title="{% trans %}i dont like this post (click again to cancel){% endtrans %}" />
- {% endif %}
-
- {% if settings.ENABLE_SHARING_TWITTER %}{{ macros.share(site = 'twitter', icon = True) }}{% endif %}
- {% if settings.ENABLE_SHARING_FACEBOOK %}{{ macros.share(site = 'facebook', icon = True) }}{% endif %}
- {% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', icon = True) }}{% endif %}
- {% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', icon = True) }}{% endif %}
- {% if settings.ENABLE_SHARING_GOOGLE %}<g:plusone size="small" count="false"></g:plusone>{% endif %}
- </div>
- </td>
- <td>
- <div class="question-body">
- {{question.html}}
- </div>
- <ul id="question-tags" class="post-tags tags">
- {% for tag in question.get_tag_names() %}
- {{ macros.tag_widget(
- tag,
- css_class = 'post-tag',
- html_tag = 'li',
- url_params = '',
- )
- }}
- {% endfor %}
- </ul>
- <div id="question-controls" class="post-controls">
- {% set pipe=joiner('<span class="sep">|</span>') %}
- {% if request.user|can_edit_post(question) %}{{ pipe() }}
- <a href="{% url edit_question question.id %}">{% trans %}edit{% endtrans %}</a>
- {% endif %}
- {% if request.user|can_retag_question(question) %}{{ pipe() }}
- <a id="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 href="{% url reopen question.id %}">{% trans %}reopen{% endtrans %}</a>
- {% endif %}
- {% else %}
- {% if request.user|can_close_question(question) %}{{ pipe() }}
- <a href="{% url close question.id %}">{% trans %}close{% endtrans %}</a>
- {% endif %}
- {% 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>{% trans %}flag offensive{% endtrans %}</a>
- {% if request.user|can_see_offensive_flags(question) %}
- <span class="darkred">{% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %}</span>
- {% endif %}
- </span>
- {% endif %}
- {% if request.user|can_delete_post(question) %}{{ pipe() }}
- <a id="question-delete-link-{{question.id}}">{% if question.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %}</a>
- {% endif %}
- </div>
- <div class="post-update-info-container">
- {{
- macros.post_contributor_info(
- question,
- "original_author",
- question.wiki,
- settings.MIN_REP_TO_EDIT_WIKI
- )
- }}
- {{
- macros.post_contributor_info(
- question,
- "last_updater",
- question.wiki,
- settings.MIN_REP_TO_EDIT_WIKI,
- )
- }}
- </div>
- {{
- macros.post_comments_widget(
- post = question,
- show_post = show_post,
- show_comment = show_comment,
- comment_order_number = comment_order_number,
- user = request.user,
- max_comments = settings.MAX_COMMENTS_TO_SHOW
- )
- }}
- <!--/div-->
- </td>
- </tr>
-</table>
-{% if question.closed %}
-<div class="question-status" style="margin-bottom:15px">
-<h3>{% trans close_reason=question.get_close_reason_display() %}The question has been closed for the following reason "{{ close_reason }}" by{% endtrans %}
-<a href="{{ question.closed_by.get_profile_url() }}">{{ question.closed_by.username }}</a>
-{% trans closed_at=question.closed_at %}close date {{closed_at}}{% endtrans %}</h3>
-</div>
-{% endif %}
-{% if answers %}
- <div class="tabBar">
- <h2 id="sort-top">
- {% trans counter=answers|length %}
- {{counter}} Answer:
- {% pluralize %}
- {{counter}} Answers:
- {% endtrans %}
- </h2>
- <div class="tabsA">
- <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>
- </div>
- </div>
- {{ macros.paginator(paginator_context) }}
-
- {% for answer in answers %}
- <a name="{{ answer.id }}"></a>
- <div id="answer-container-{{ answer.id }}" class="answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id==question.author_id %} answered-by-owner{% endif %} {% if answer.deleted %}deleted{% endif %}">
- <table style="width:100%;" class="answer-table">
- <tr>
- <td style="width:30px;vertical-align:top">
- <div class="vote-buttons">
- <img id="answer-img-upvote-{{ answer.id }}" class="answer-img-upvote"
- {% if user_answer_votes[answer.id] == 1 %}
- src="{{'/images/vote-arrow-up-on.png'|media}}"
- {% else %}
- src="{{'/images/vote-arrow-up.png'|media}}"
- {% endif %}
- alt="{% trans %}i like this answer (click again to cancel){% endtrans %}"
- title="{% trans %}i like this answer (click again to cancel){% endtrans %}"/>
- <div id="answer-vote-number-{{ answer.id }}" class="vote-number" title="{% trans %}current number of votes{% endtrans %}">
- {{ answer.score }}
- </div>
- <img id="answer-img-downvote-{{ answer.id }}" class="answer-img-downvote"
- {% if user_answer_votes[answer.id] == -1 %}
- src="{{'/images/vote-arrow-down-on.png'|media}}"
- {% else %}
- src="{{'/images/vote-arrow-down.png'|media}}"
- {% endif %}
- alt="{% trans %}i dont like this answer (click again to cancel){% endtrans %}"
- title="{% trans %}i dont like this answer (click again to cancel){% endtrans %}" />
- {% if request.user == question.author %}
- <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 favorite (click again to undo){% endtrans %}"
- title="{% trans %}mark this answer as favorite (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}}"
- {% else %}
- src="{{'/images/vote-accepted.png'|media}}"
- {% 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>
- </td>
- <td>
- <div class="item-right">
- <div class="answer-body">
- {{ answer.html }}
- </div>
- <div class="answer-controls post-controls">
- {% set pipe=joiner('<span class="sep">|</span>') %}
- <span class="linksopt">{{ pipe() }}
- <a
- href="{{ answer.get_absolute_url() }}"
- title="{% trans %}answer permanent link{% endtrans %}">
- {% trans %}permanent link{% endtrans %}
- </a>
- </span>
- {% if request.user|can_edit_post(answer) %}{{ pipe() }}
- <span class="action-link"><a href="{% url edit_answer answer.id %}">{% trans %}edit{% 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>{% trans %}flag offensive{% endtrans %}</a>
- {% 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>
- {% endif %}
- {% if request.user|can_delete_post(answer) %}{{ pipe() }}
- {% spaceless %}
- <span class="action-link">
- <a 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 %}
- </div>
- <div class="post-update-info-container">
- {{
- macros.post_contributor_info(
- answer,
- "original_author",
- answer.wiki,
- settings.MIN_REP_TO_EDIT_WIKI
- )
- }}
- {{
- macros.post_contributor_info(
- answer,
- "last_updater",
- answer.wiki,
- settings.MIN_REP_TO_EDIT_WIKI
- )
- }}
- </div>
- {{
- macros.post_comments_widget(
- post = answer,
- show_post = show_post,
- show_comment = show_comment,
- comment_order_number = comment_order_number,
- user = request.user,
- max_comments = settings.MAX_COMMENTS_TO_SHOW
- )
- }}
- </div>
- </td>
- </tr>
- </table>
- </div>
- {% endfor %}
- {{ macros.paginator(paginator_context) }}
-{% else %}
- {% set question_url=settings.APP_URL+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 %}
- {% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', site_label = 'LinkedIn') }},{% endif %}
- {% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', site_label = 'Identi.ca') }},{% endif %}
- {%- if settings.ENABLE_SHARING_TWITTER or settings.ENABLE_SHARING_FACEBOOK or settings.ENABLE_SHARING_LINKEDIN or settings.ENABLE_SHARING_IDENTICA -%}
- {% trans %} or{% endtrans %}
- {% endif %}
- <a href="mailto:?subject={{ settings.APP_SHORT_NAME|urlencode }}&amp;body={{ question_url }}">{% trans %}email{% endtrans %}</a>.
- </h2>
-{% endif %}
-<form
- id="fmanswer"
- {% if user == question.author %}style="display:none"{% endif %}
- action="{% url answer question.id %}"
- method="post"
->{% csrf_token %}
- {% if request.user.is_authenticated() %}
- <p style="padding-left:3px">
- {{ 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 %}
- </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 style="padding-left:3px">
- {{ answer.email_notify }}
- <label>{% trans %}once you sign in you will be able to subscribe for any updates here{% endtrans %}</label>
- </p>
- {% endif %}
- <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>
- {% endif %}
- {% else %}
- {% if not question.closed %}
- <div style="padding:10px 0 0 0;">
- {% spaceless %}
- <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>
- {% else %}
- <p class="message">
- {% if request.user==question.author %}
- {% trans %}answer your own question only to give an answer{% endtrans %}
- {% else %}
- {% trans %}please only give an answer, no discussions{% 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"/>
- {% if settings.WIKI_ON %}
- {{ macros.checkbox_in_div(answer.wiki) }}
- {% endif %}
- {% endif %}
- {% endif %}
- </form>
- {% if request.user == question.author %}
- <input type="button" class="submit after-editor" id="fmanswer_button" value="{% trans %}Answer Your Own Question{% endtrans %}"/>
- {%endif%}
+ {%include "question/content.html" %}
{% endblock %}
-
{% block sidebar %}
-
-{{ settings.SIDEBAR_QUESTION_HEADER }}
-<div class="boxC vote-buttons">
- <h2 style="font-size: 22px;margin-top: 11px; text-align: left;">{% trans %}Question tools{% endtrans %}</h2>
- {% if favorited %}
- <a class="button followed"
- alt="{% trans %}click to unfollow this question{% endtrans %}">
- <div>{% trans %}Following{% endtrans %}</div>
- <div class='unfollow'>{% trans %}Unfollow{% endtrans %}</div>
- </a>
- {% else %}
- <a class="button follow"
- alt="{% trans %}click to follow this question{% endtrans %}">
- {%trans %}Follow{%endtrans%}
- </a>
- {% endif %}
- <div class="clearfix"></div>
- <div id="favorite-number" class="favorite-number{% if favorited %} my-favorite-number{% endif %}">
- {% set follower_count = question.favourite_count %}
- {% if follower_count > 0 %}
- {% trans count=follower_count %}{{count}} follower{% pluralize %}{{count}} followers{% endtrans %}
- {% endif %}
- </div>
- <div class="notify-sidebar">
- {%if request.user.is_authenticated() %}
- <input type="checkbox" id="question-subscribe-sidebar"/>
- <label for="question-subscribe-sidebar">{% trans %}email the updates{% endtrans %}</label>
- {%else%}
- <input type="checkbox" id="question-subscribe-sidebar"/>
- <label for="question-subscribe-sidebar">{% trans %}<strong>Here</strong> (once you log in) you will be able to sign up for the periodic email updates about this question.{% endtrans %}</label>
- {%endif%}
- <p class="rss">
- <a
- href="{{settings.APP_URL}}/feeds/question/{{ question.id }}"
- title="{% trans %}subscribe to this question rss feed{% endtrans %}"
- >{% trans %}subsribe to rss feed{% endtrans %}</a>
- </p>
- </div>
-</div>
-{% cache 0 "questions_tags" questions_tags question.id language_code %}
-{% if settings.SIDEBAR_QUESTION_SHOW_TAGS %}
- <div class="boxC">
- <div class="clearfix"></div>
- <h2>
- {% trans %}Question tags{% endtrans %}:
- </h2>
- <ul id="related-tags" class="tags">
- {% for tag in tags %}
- <li>
- {{ macros.tag_widget(
- tag,
- html_tag = 'div',
- url_params = '',
- extra_content = '<span class="tag-number">&#215; ' ~
- tag.used_count|intcomma ~ '</span>'
- )
- }}
- </li>
- {% endfor %}
- </ul>
- </div>
-{% endif %}
-
-{% if settings.SIDEBAR_QUESTION_SHOW_META %}
-<div class="boxC">
- <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>
- </p>
- <p>
- {% trans %}question was seen{% endtrans %}: <strong>{{ question.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>
- </p>
-</div>
-{% endif %}
-{% endcache %}
-
-{% if similar_questions.data and settings.SIDEBAR_QUESTION_SHOW_RELATED %}
- {% cache 1800 "related_questions" related_questions question.id language_code %}
- <div class="boxC">
- <h2>{% trans %}Related questions{% endtrans %}</h2>
- <div class="questions-related">
- {% for question in similar_questions.data() %}
- <p>
- <a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a>
- </p>
- {% endfor %}
- </div>
- </div>
- {% endcache %}
-{% endif %}
-
-{{ settings.SIDEBAR_QUESTION_FOOTER }}
-
+ {%include "question/sidebar.html" %}
{% endblock %}
{% block endjs %}
- {% 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 %}';
- askbot['urls']['question_url_template'] = scriptUrl + '{% trans %}question/{% endtrans %}{{ "{{QuestionID}}/{{questionSlug}}" }}';{# yes it needs to be that whacky #}
- askbot['urls']['user_signin'] = '{{ settings.LOGIN_URL }}';
- askbot['urls']['vote_url_template'] = scriptUrl + '{% trans %}questions/{% endtrans %}{{ "{{QuestionID}}/" }}{% trans %}vote/{% endtrans %}';
- 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/jquery.validate.min.js"|media}}'></script>
- <script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
- <script type="text/javascript">
- // define reputation needs for comments
- var repNeededForComments = 50;
- $().ready(function(){
- {% if request.user.is_authenticated() %}
- if ($('#question-subscribe-updates')[0].checked){
- $('#question-subscribe-sidebar').attr({'checked': 'checked'});
- }
- {%endif%}
- $("#nav_questions").attr('className',"on");
- 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 }}');
-
- {% if not question.closed and request.user.is_authenticated %}initEditor();{% endif %}
-
- lanai.highlightSyntax();
- $('#btLogin').bind('click', function(){window.location.href='{{ settings.LOGIN_URL }}'; } )
- if (window.location.hash === 'fmanswer'){
- $('#fmanswer textarea').focus();
- }
- {% if settings.ENABLE_SHARING_GOOGLE %}$.getScript("http://apis.google.com/js/plusone.js"){% endif %}
-
- {% if request.user == question.author %}
- $("#fmanswer_button").click(function() {
- $("#fmanswer").show();
- $("#fmanswer_button").hide();
- });
- {%endif%}
- });
-
- $(window).bind('hashchange', animate_hashes);
-
- function animate_hashes(){
- var id_value = window.location.hash;
- if (id_value != ""){
- var previous_color = $(id_value).css('background-color');
- $(id_value).css('backgroundColor', '#FFF8C6');
- $(id_value).animate({backgroundColor: '#ff7f2a'}, 1000).animate({backgroundColor: '#FFF8C6'}, 1000, function(){
- $(id_value).css('backgroundColor', previous_color);
- });
- }
- }
-
-
- function initEditor(){
- $('#editor').TextAreaResizer();
- //highlight code synctax when editor has new text
- $("#editor").typeWatch({highlight: false, wait: 3000,
- captureLength: 5, callback: lanai.highlightSyntax});
-
- var display = true;
- var txt = "[{% trans %}hide preview{% endtrans %}]";
- $('#pre-collapse').text(txt);
- $('#pre-collapse').bind('click', function(){
- txt = display ? "[{% trans %}show preview{% endtrans %}]" : "[{% trans %}hide preview{% endtrans %}]";
- display = !display;
- $('#previewer').toggle();
- $('#pre-collapse').text(txt);
- });
- setupFormValidation($("#fmanswer"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
- }
- </script>
- {% include "blocks/editor_data.html" %}
+ {%include "question/javascript.html" %}
{% endblock %}
+
diff --git a/askbot/skins/default/templates/question/answer_card.html b/askbot/skins/default/templates/question/answer_card.html
new file mode 100644
index 00000000..1d7380c5
--- /dev/null
+++ b/askbot/skins/default/templates/question/answer_card.html
@@ -0,0 +1,25 @@
+<a name="{{ answer.id }}"></a>
+<div
+ id="answer-container-{{ answer.id }}"
+ class="{{ macros.answer_classes(answer, question) }}">
+ <div class="vote-buttons">
+ {% include "question/answer_vote_buttons.html" %}
+ </div>
+ <div class="answer-table">
+
+ <div class="item-right">
+ <div class="answer-body">
+ <div class="post-update-info-container">
+ {% include "question/answer_author_info.html" %}
+ </div>
+ {{ answer.html }}
+ </div>
+ <div class="answer-controls post-controls">
+ {% include "question/answer_controls.html" %}
+ </div>
+ {% include "question/answer_comments.html" %}
+ </div>
+ </div>
+ <div class="clean"></div>
+</div>
+<div class="clean"></div>
diff --git a/askbot/skins/default/templates/question/answer_tab_bar.html b/askbot/skins/default/templates/question/answer_tab_bar.html
new file mode 100644
index 00000000..3e39f795
--- /dev/null
+++ b/askbot/skins/default/templates/question/answer_tab_bar.html
@@ -0,0 +1,24 @@
+<div class="tabBar tabBar-answer">
+ <h2 id="questionCount">
+ {% trans counter=answers|length %}
+ {{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>
+ </div>
+</div>
+<div class="clean"></div>
diff --git a/askbot/skins/default/templates/question/content.html b/askbot/skins/default/templates/question/content.html
new file mode 100644
index 00000000..a2589628
--- /dev/null
+++ b/askbot/skins/default/templates/question/content.html
@@ -0,0 +1,19 @@
+{% import "macros.html" as macros %}
+{% include "question/question_card.html" %}
+{% if question.closed %}
+ {% include "question/closed_question_info.html" %}
+{% endif %}
+{% if answers %}
+ {% include "question/answer_tab_bar.html" %}
+ {{ macros.paginator(paginator_context) }}
+ {% for answer in answers %}
+ {% include "question/answer_card.html" %}
+ {% endfor %}
+ {{ macros.paginator(paginator_context) }}
+{% else %}
+ {% include "question/sharing_prompt_phrase.html" %}
+{% endif %}
+ {% 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%}
diff --git a/askbot/skins/default/templates/question/javascript.html b/askbot/skins/default/templates/question/javascript.html
new file mode 100644
index 00000000..c5dd9f37
--- /dev/null
+++ b/askbot/skins/default/templates/question/javascript.html
@@ -0,0 +1,100 @@
+{% 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/jquery.validate.min.js"|media}}'></script>
+<script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
+<script type="text/javascript">
+ // define reputation needs for comments
+ var repNeededForComments = 50;
+ $().ready(function(){
+ {% if request.user.is_authenticated() %}
+ if ($('#question-subscribe-updates')[0].checked){
+ $('#question-subscribe-sidebar').attr({'checked': 'checked'});
+ }
+ {%endif%}
+ $("#nav_questions").attr('className',"on");
+ 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 }}');
+
+ {% if not question.closed and request.user.is_authenticated %}initEditor();{% endif %}
+
+ lanai.highlightSyntax();
+ $('#btLogin').bind('click', function(){window.location.href='{{ settings.LOGIN_URL }}'; } )
+ if (window.location.hash === 'fmanswer'){
+ $('#fmanswer textarea').focus();
+ }
+ {% if settings.ENABLE_SHARING_GOOGLE %}$.getScript("http://apis.google.com/js/plusone.js"){% endif %}
+
+ {% if request.user == question.author %}
+ $("#fmanswer_button").click(function() {
+ $("#fmanswer").show();
+ $("#fmanswer_button").hide();
+ });
+ {%endif%}
+ });
+
+ $(window).bind('hashchange', animate_hashes);
+
+ function animate_hashes(){
+ var id_value = window.location.hash;
+ if (id_value != ""){
+ var previous_color = $(id_value).css('background-color');
+ $(id_value).css('backgroundColor', '#FFF8C6');
+ $(id_value).animate({backgroundColor: '#ff7f2a'}, 1000).animate({backgroundColor: '#FFF8C6'}, 1000, function(){
+ $(id_value).css('backgroundColor', previous_color);
+ });
+ }
+ }
+
+
+ function initEditor(){
+ $('#editor').TextAreaResizer();
+ //highlight code synctax when editor has new text
+ $("#editor").typeWatch({highlight: false, wait: 3000,
+ captureLength: 5, callback: lanai.highlightSyntax});
+
+ var display = true;
+ var txt = "[{% trans %}hide preview{% endtrans %}]";
+ $('#pre-collapse').text(txt);
+ $('#pre-collapse').bind('click', function(){
+ txt = display ? "[{% trans %}show preview{% endtrans %}]" : "[{% trans %}hide preview{% endtrans %}]";
+ display = !display;
+ $('#previewer').toggle();
+ $('#pre-collapse').text(txt);
+ });
+ setupFormValidation($("#fmanswer"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
+ }
+</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
new file mode 100644
index 00000000..49474baa
--- /dev/null
+++ b/askbot/skins/default/templates/question/new_answer_form.html
@@ -0,0 +1,57 @@
+<form
+ id="fmanswer"
+ {% if user == question.author %}style="display:none"{% endif %}
+ action="{% url answer question.id %}"
+ method="post"
+>{% csrf_token %}
+ {% include "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>
+ {% endif %}
+ {% else %}
+ {% if not question.closed %}
+ <div>
+ {% spaceless %}
+ <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>
+ {% else %}
+ <p class="message">
+ {% if request.user==question.author %}
+ {% trans %}answer your own question only to give an answer{% endtrans %}
+ {% else %}
+ {% trans %}please only give an answer, no discussions{% 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"/>
+ {% if settings.WIKI_ON %}
+ {{ macros.checkbox_in_div(answer.wiki) }}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+</form>
diff --git a/askbot/skins/default/templates/question/question_card.html b/askbot/skins/default/templates/question/question_card.html
new file mode 100644
index 00000000..b1fa1743
--- /dev/null
+++ b/askbot/skins/default/templates/question/question_card.html
@@ -0,0 +1,22 @@
+<div class="vote-buttons">
+ {% include "question/question_vote_buttons.html"%}
+ {% include "question/share_buttons.html"%}
+</div>
+<div class="question-content">
+
+ <h1><a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a></h1>
+ {% include "question/question_tags.html" %}
+ <div id="question-table" {% if question.deleted %}class="deleted"{%endif%}>
+ <div class="question-body">
+ <div class="post-update-info-container">
+ {% include "question/question_author_info.html" %}
+ </div>
+ {{question.html}}
+ </div>
+ <div id="question-controls" class="post-controls">
+ {% include "question/question_controls.html" %}
+ </div>
+ {% 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
new file mode 100644
index 00000000..f7bd20af
--- /dev/null
+++ b/askbot/skins/default/templates/question/sharing_prompt_phrase.html
@@ -0,0 +1,11 @@
+{% set question_url=settings.APP_URL+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 %}
+ {% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', site_label = 'LinkedIn') }},{% endif %}
+ {% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', site_label = 'Identi.ca') }},{% endif %}
+ {%- if settings.ENABLE_SHARING_TWITTER or settings.ENABLE_SHARING_FACEBOOK or settings.ENABLE_SHARING_LINKEDIN or settings.ENABLE_SHARING_IDENTICA -%}
+ {% trans %} or{% endtrans %}
+ {% endif %}
+ <a href="mailto:?subject={{ settings.APP_SHORT_NAME|urlencode }}&amp;body={{ question_url }}">{% trans %}email{% endtrans %}</a>.
+</h2>
diff --git a/askbot/skins/default/templates/question/sidebar.html b/askbot/skins/default/templates/question/sidebar.html
new file mode 100644
index 00000000..d011d562
--- /dev/null
+++ b/askbot/skins/default/templates/question/sidebar.html
@@ -0,0 +1,75 @@
+{% import "macros.html" as macros %}
+{{ settings.SIDEBAR_QUESTION_HEADER }}
+<div class="box vote-buttons">
+ <h2 >{% trans %}Question tools{% endtrans %}</h2>
+ {% if favorited %}
+ <a class="button followed"
+ alt="{% trans %}click to unfollow this question{% endtrans %}">
+ <div>{% trans %}Following{% endtrans %}</div>
+ <div class='unfollow'>{% trans %}Unfollow{% endtrans %}</div>
+ </a>
+ {% else %}
+ <a class="button followed"
+ alt="{% trans %}click to follow this question{% endtrans %}">
+ {%trans %}Follow{%endtrans%}
+ </a>
+ {% endif %}
+ <div class="clearfix"></div>
+ <div id="favorite-number" class="favorite-number{% if favorited %} my-favorite-number{% endif %}">
+ {% set follower_count = question.favourite_count %}
+ {% if follower_count > 0 %}
+ {% trans count=follower_count %}{{count}} follower{% pluralize %}{{count}} followers{% endtrans %}
+ {% endif %}
+ </div>
+ <div class="notify-sidebar">
+ {%if request.user.is_authenticated() %}
+ <input type="checkbox" id="question-subscribe-sidebar"/>
+ <label for="question-subscribe-sidebar">{% trans %}email the updates{% endtrans %}</label>
+ {%else%}
+ <input type="checkbox" id="question-subscribe-sidebar"/>
+ <label for="question-subscribe-sidebar">{% trans %}<strong>Here</strong> (once you log in) you will be able to sign up for the periodic email updates about this question.{% endtrans %}</label>
+ {%endif%}
+ <p class="rss">
+ <a
+ href="{{settings.APP_URL}}/feeds/question/{{ question.id }}"
+ title="{% trans %}subscribe to this question rss feed{% endtrans %}"
+ >{% trans %}subsribe to rss feed{% endtrans %}</a>
+ </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>
+ </p>
+ <p>
+ {% trans %}question was seen{% endtrans %}: <strong>{{ question.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>
+ </p>
+</div>
+{% endif %}
+{% endcache %}
+
+{% if similar_questions.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() %}
+ <p>
+ <a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a>
+ </p>
+ {% endfor %}
+ </div>
+ </div>
+ {#% endcache %#}
+{% endif %}
+
+{{ settings.SIDEBAR_QUESTION_FOOTER }}
diff --git a/askbot/skins/default/templates/question/subscribe_by_email_prompt.html b/askbot/skins/default/templates/question/subscribe_by_email_prompt.html
new file mode 100644
index 00000000..8b0b6853
--- /dev/null
+++ b/askbot/skins/default/templates/question/subscribe_by_email_prompt.html
@@ -0,0 +1,23 @@
+{% if request.user.is_authenticated() %}
+ <p>
+ {{ 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 %}
+ </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>
+ </p>
+{% endif %}
diff --git a/askbot/skins/default/templates/question_edit.html b/askbot/skins/default/templates/question_edit.html
index feee2521..47873e0e 100644
--- a/askbot/skins/default/templates/question_edit.html
+++ b/askbot/skins/default/templates/question_edit.html
@@ -6,7 +6,7 @@
<link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
{% endblock %}
{% block content %}
-<h1>{% trans %}Edit question{% endtrans %} [<a href="{{ question.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]</h1>
+<div class="section-title">{% trans %}Edit question{% endtrans %} [<a href="{{ question.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]</div>
<form id="fmedit" action="{% url edit_question question.id %}" method="post" >{% csrf_token %}
{% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul() }}{% endif %}
@@ -24,8 +24,6 @@
)
}}
<div class="after-editor">
- <input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
- <input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
<div class="question-options">
{% if settings.WIKI_ON and question.wiki == False %}
{{ macros.checkbox_in_div(form.wiki) }}
@@ -34,19 +32,22 @@
{{ macros.checkbox_in_div(form.reveal_identity) }}
{% endif %}
</div>
+ <input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
+ <input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
+
</div>
</form>
{% endblock %}
{% block sidebar %}
-{% include "blocks/question_edit_tips.html" %}
+{% include "widgets/question_edit_tips.html" %}
{% endblock %}
{% block endjs %}
- {% include "blocks/editor_data.html" %}
+ {% include "meta/editor_data.html" %}
<script type='text/javascript' src='{{"/js/editor.js"|media }}'></script>
{% if mandatory_tags %}
- {% include "blocks/mandatory_tags_js.html" %}
+ {% include "meta/mandatory_tags_js.html" %}
{% endif %}
<script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
<script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
diff --git a/askbot/skins/default/templates/revisions.html b/askbot/skins/default/templates/revisions.html
index 0c10e6d4..7fb985e2 100644
--- a/askbot/skins/default/templates/revisions.html
+++ b/askbot/skins/default/templates/revisions.html
@@ -3,7 +3,7 @@
<!-- revisions.html -->
{% block title %}{% spaceless %}{% trans %}Revision history{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>
+<h1 class="section-title">
{% trans %}Revision history{% endtrans %} [<a href="{{ post.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]
</h1>
<div id="revisions">
diff --git a/askbot/skins/default/templates/tags.html b/askbot/skins/default/templates/tags.html
index 99eb5bf7..4894bdb1 100644
--- a/askbot/skins/default/templates/tags.html
+++ b/askbot/skins/default/templates/tags.html
@@ -4,14 +4,14 @@
{% block title %}{% spaceless %}{% trans %}Tag list{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<!-- Tabs -->
-<div class="tabBar">
- {% if stag %}
- <h1>{% trans %}Tags, matching "{{ stag }}"{% endtrans %}</h1>
- {% else %}
- <h1>{% trans %}Tag list{% endtrans %}</h1>
- {% endif %}
-
+{% 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"
@@ -45,6 +45,7 @@
</li>
{% endfor %}
</ul>
+ <div class="clean"></div>
<div class="pager">
{{macros.paginator(paginator_context)}}
</div>
diff --git a/askbot/skins/default/templates/user_profile/user.html b/askbot/skins/default/templates/user_profile/user.html
index ad3d564b..1693303e 100644
--- a/askbot/skins/default/templates/user_profile/user.html
+++ b/askbot/skins/default/templates/user_profile/user.html
@@ -1,4 +1,4 @@
-{% extends "two_column_body.html" %}
+{% extends "one_column_body.html" %}
<!-- user.html -->
{% block title %}{% spaceless %}{{ page_title }}{% endspaceless %}{% endblock %}
{% block forestyle%}
@@ -7,15 +7,13 @@
</style>
{% endblock %}
{% block content %}
- <h1>
+ <h1 class="section-title">
{% spaceless %}
- <a href="{% url user_profile view_user.id, view_user.username|slugify %}">
{% trans username=view_user.username %}{{username}}'s profile{% endtrans %} - {% block profilesection %}{% endblock %}
- </a>
{% endspaceless %}
</h1>
- <div style="margin-left: 5px;">
- {% include "user_profile/user_tabs.html" %}
+ {% include "user_profile/user_tabs.html" %}
+ <div>
{% block usercontent %}
{% endblock %}
</div>
diff --git a/askbot/skins/default/templates/user_profile/user_favorites.html b/askbot/skins/default/templates/user_profile/user_favorites.html
index bb019c90..08c3c688 100644
--- a/askbot/skins/default/templates/user_profile/user_favorites.html
+++ b/askbot/skins/default/templates/user_profile/user_favorites.html
@@ -1,7 +1,7 @@
{% extends "user_profile/user.html" %}
<!-- user_favorites.html -->
{% block profilesection %}
- {% trans %}followed questions{% endtrans %}
+ <h1 class="section-title"> {% trans %}followed questions{% endtrans %}</h1>
{% endblock %}
{% block usercontent %}
{% include "user_profile/users_questions.html" %}
diff --git a/askbot/skins/default/templates/user_profile/user_reputation.html b/askbot/skins/default/templates/user_profile/user_reputation.html
index 99b304d2..0deb2b97 100644
--- a/askbot/skins/default/templates/user_profile/user_reputation.html
+++ b/askbot/skins/default/templates/user_profile/user_reputation.html
@@ -8,16 +8,17 @@
<div id="diagram" class="karma-diagram"></div>
<div class="karma-details">
{% if view_user.id == user.id %}
- <h3>{% trans %}Your karma change log.{% endtrans %}</h3>
+ <h2>{% trans %}Your karma change log.{% endtrans %}</h2>
{% else %}
- <h3>{% trans user_name=view_user.username %}{{user_name}}'s karma change log{% endtrans %}</h3>
+ <h2>{% trans user_name=view_user.username %}{{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">({{rep.reputed_at|diff_date}})</span>
+ <div class="clean"></div>
</p>
{% endfor %}
</div>
diff --git a/askbot/skins/default/templates/user_profile/user_stats.html b/askbot/skins/default/templates/user_profile/user_stats.html
index 2fd26f82..92e4d495 100644
--- a/askbot/skins/default/templates/user_profile/user_stats.html
+++ b/askbot/skins/default/templates/user_profile/user_stats.html
@@ -8,7 +8,7 @@
{% include "user_profile/user_info.html" %}
<a name="questions"></a>
{% spaceless %}
- <h2>{% trans counter=questions|length %}<span class="count">{{counter}}</span> Question{% pluralize %}<span class="count">{{counter}}</span> Questions{% endtrans %}</h2>
+ <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>
diff --git a/askbot/skins/default/templates/user_profile/user_tabs.html b/askbot/skins/default/templates/user_profile/user_tabs.html
index ad24a303..0c7c4599 100644
--- a/askbot/skins/default/templates/user_profile/user_tabs.html
+++ b/askbot/skins/default/templates/user_profile/user_tabs.html
@@ -1,5 +1,5 @@
<!-- user_tabs.html -->
-<div class="tabBar">
+<div class="tabBar tabBar-profile">
<div class="tabsC">
<a id="stats" {% if tab_name=="stats" %}class="on"{% endif %}
title="{% trans %}User profile{% endtrans %}"
@@ -49,4 +49,5 @@
{% endif %}
</div>
</div>
+<div class="clean"></div>
<!-- end user_tabs.html -->
diff --git a/askbot/skins/default/templates/user_profile/user_votes.html b/askbot/skins/default/templates/user_profile/user_votes.html
index d5e469ae..5111a580 100644
--- a/askbot/skins/default/templates/user_profile/user_votes.html
+++ b/askbot/skins/default/templates/user_profile/user_votes.html
@@ -10,9 +10,9 @@
<div style="width:150px;float:left">{{vote.voted_at|diff_date(True)}}</div>
<div style="width:30px;float:left">
{% if vote.vote==1 %}
- <img src="{{"/images/vote-arrow-up-on.png"|media}}" title="{% trans %}upvote{% endtrans %}">
+ <img src="{{"/images/vote-arrow-up-on-new.png"|media}}" title="{% trans %}upvote{% endtrans %}">
{% else %}
- <img src="{{"/images/vote-arrow-down-on.png"|media}}" title="{% trans %}downvote{% endtrans %}">
+ <img src="{{"/images/vote-arrow-down-on-new.png"|media}}" title="{% trans %}downvote{% endtrans %}">
{% endif %}
</div>
<div style="float:left;overflow:hidden;width:750px">
diff --git a/askbot/skins/default/templates/users.html b/askbot/skins/default/templates/users.html
index 1d7d02dd..0502a6e5 100644
--- a/askbot/skins/default/templates/users.html
+++ b/askbot/skins/default/templates/users.html
@@ -3,9 +3,10 @@
<!-- users.html -->
{% block title %}{% spaceless %}{% trans %}Users{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<div class="tabBar">
- <h1>{% trans %}Users{% endtrans %}</h1>
+<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"
@@ -32,6 +33,7 @@
><span>{% trans %}by username{% endtrans %}</span></a>
</div>
</div>
+<div class="clean"></div>
<p>
{% if suser %}
{% trans %}users matching query {{suser}}:{% endtrans %}
diff --git a/askbot/skins/default/templates/widgets/answer_edit_tips.html b/askbot/skins/default/templates/widgets/answer_edit_tips.html
new file mode 100644
index 00000000..9cf0606e
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/answer_edit_tips.html
@@ -0,0 +1,67 @@
+<!-- template answer_edit_tips.html -->
+<div class="box">
+ <h2>{% trans %}answer tips{% endtrans %}</h2>
+ <div id="tips">
+ <ul >
+ <li> <b>{% trans %}please make your answer relevant 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 %}
+ </li>
+ <li>
+ {% trans %}be clear and concise{% endtrans %}
+ </li>
+ </ul>
+ <p class='info-box-follow-up-links'>
+<!-- will be change to a popup windows
+ <a href="{% url faq %}" target="_blank" title="{% trans %}see frequently asked questions{% endtrans %}">{% trans %}FAQ{% endtrans %} »</a>
+-->
+ </p>
+ </div>
+</div>
+
+<div class="box">
+ <h2>{% trans %}Markdown tips{% endtrans %}</h2>
+ <ul>
+ {% if settings.MARKUP_CODE_FRIENDLY or settings.ENABLE_MATHJAX %}
+ <li>
+ {% trans %}*italic*{% endtrans %}
+ </li>
+ <li>
+ {% trans %}**bold**{% endtrans %}
+ </li>
+ {% else %}
+ <li>
+ {% trans %}*italic* or _italic_{% endtrans %}
+ </li>
+ <li>
+ {% trans %}**bold** or __bold__{% endtrans %}
+ </li>
+ {% endif %}
+ <li>
+ <b>{% trans %}link{% endtrans %}</b>:[{% trans %}text{% endtrans %}](http://url.com/ "{% trans %}title{% endtrans %}")
+
+ </li>
+ <li>
+ <b>{% trans %}image{% endtrans %}</b>:![alt {% trans %}text{% endtrans %}](/path/img.jpg "{% trans %}title{% endtrans %}")
+
+ </li>
+ <li>
+ {% trans %}numbered list:{% endtrans %}
+ 1. Foo
+ 2. Bar
+ </li>
+ <li>
+ {% trans %}basic HTML tags are also supported{% endtrans %}
+ </li>
+ </ul>
+ <p class='info-box-follow-up-links'>
+<!-- will be change to a popup windows
+ <a href="http://en.wikipedia.org/wiki/Markdown" target="_blank">{% trans %}learn more about Markdown{% endtrans %} »</a>
+-->
+ </p>
+</div>
+<!-- end template answer_edit_tips.html -->
diff --git a/askbot/skins/default/templates/widgets/ask_button.html b/askbot/skins/default/templates/widgets/ask_button.html
new file mode 100644
index 00000000..8240f0f4
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/ask_button.html
@@ -0,0 +1,3 @@
+{% if active_tab != "ask" %}
+ <a id="askButton" href="{% url ask %}">{% trans %}ask a question{% endtrans %}</a>
+{% endif %}
diff --git a/askbot/skins/default/templates/widgets/ask_form.html b/askbot/skins/default/templates/widgets/ask_form.html
new file mode 100644
index 00000000..18196d93
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/ask_form.html
@@ -0,0 +1,47 @@
+{% import "macros.html" as macros %}
+<form id="fmask" action="" method="post" >{% csrf_token %}
+ <div class="form-item">
+ <div id="askFormBar">
+ {% if not request.user.is_authenticated() %}
+ <p>{% trans %}login to post question info{% 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 %}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ <input id="id_title" class="questionTitleInput" name="title" autocomplete="off"
+ value="{% if form.initial.title %}{{form.initial.title}}{% endif %}"/>
+ <span class="form-error">{{ form.title.errors }}</span>
+ </div>
+ <div class="title-desc">
+ {{ form.title.help_text }}
+ </div>
+ </div>
+ <div id='question-list'></div>
+ {{
+ macros.edit_post(
+ form,
+ post_type = 'question',
+ edit_title = False,
+ mandatory_tags = mandatory_tags
+ )
+ }}
+ <div class="question-options">
+ {% if settings.WIKI_ON %}
+ {{ macros.checkbox_in_div(form.wiki) }}
+ {% endif %}
+ {% if settings.ALLOW_ASK_ANONYMOUSLY %}
+ {{ macros.checkbox_in_div(form.ask_anonymously) }}
+ {% 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" />
+ {% else %}
+ <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
new file mode 100644
index 00000000..14651f80
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/contributors.html
@@ -0,0 +1,10 @@
+{% cache 600 "contributors" contributors search_tags scope sort query context.page context.page_size language_code %}
+ <div id="contrib-users" class="box">
+ <h2 class="contributorback">{% trans %}Contributors{% endtrans %}</h2>
+ {% spaceless %}
+ {% for person in contributors %}
+ {{ macros.gravatar(person,48) }}
+ {% endfor %}
+ {% endspaceless %}
+ </div>
+{% endcache %}
diff --git a/askbot/skins/default/templates/widgets/footer.html b/askbot/skins/default/templates/widgets/footer.html
new file mode 100644
index 00000000..14f18786
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/footer.html
@@ -0,0 +1,61 @@
+<!-- template footer.html -->
+<div id="ground">
+ <div class="content-wrapper">
+ {% if settings.USE_LICENSE %}{# could be factored out into separate template #}
+ {% if settings.LICENSE_USE_URL %}
+ <div class="copyright">
+ {% if settings.LICENSE_USE_LOGO %}
+ <a href="{{ settings.LICENSE_URL}}">
+ <img
+ class="license-logo"
+ src="{{settings.LICENSE_LOGO_URL|media }}"
+ title="{{settings.LICENSE_ACRONYM}}"
+ alt="{{settings.LICENSE_ACRONYM}}"
+ />
+ </a>
+ {% endif %}
+ {{settings.APP_COPYRIGHT}} {% trans
+ license_title=settings.LICENSE_TITLE,
+ license_url=settings.LICENSE_URL
+ %}Content on this site is licensed under a <a href="{{license_url}}">{{license_title}}</a> license.{% endtrans %}
+
+ </div>
+ {% else %}
+ <div class="copyright">
+ {% if settings.LICENSE_USE_LOGO %}
+ <img
+ class="license-logo"
+ src="{{settings.LICENSE_LOGO_URL|media }}"
+ title="{{settings.LICENSE_ACRONYM}}"
+ alt="{{settings.LICENSE_ACRONYM}}"
+ />
+ {% endif %}
+ {{settings.APP_COPYRIGHT}} {% trans license=settings.LICENSE_TITLE %}Content on this site is licensed under a {{license}}{% endtrans %}
+ </div>
+ {% endif %}
+ {% endif %}
+ <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 privacy %}">{% trans %}privacy policy{% endtrans %}</a><span class="link-separator"> |</span>
+ {% spaceless %}
+ <a href=
+ {% if settings.FEEDBACK_SITE_URL %}
+ "{{settings.FEEDBACK_SITE_URL}}"
+ target="_blank">
+ {% else %}
+ "{% url feedback %}?next={{request.path}}">
+ {% endif %}
+ {% trans %}give feedback{% endtrans %}
+ </a>
+ {% endspaceless %}
+ </div>
+ <div class="powered-link">
+ <a href="http://askbot.org" target="_blank">
+ Powered by Askbot version {{settings.ASKBOT_VERSION}}
+ </a>
+ </div>
+ <div class="clean"></div>
+ </div>
+</div>
+<!-- end template footer.html -->
diff --git a/askbot/skins/default/templates/widgets/header.html b/askbot/skins/default/templates/widgets/header.html
new file mode 100644
index 00000000..ad0ae4a2
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/header.html
@@ -0,0 +1,17 @@
+<!-- template header.html -->
+{% import "macros.html" as macros %}
+<div id="header">
+ <div class="content-wrapper">
+
+ <div id="userToolsNav">
+ {% include "widgets/user_navigation.html" %}
+ {{settings.CUSTOM_HEADER}}
+ </div>
+ {% include "widgets/logo.html" %}
+ <div id="metaNav">
+ {% include "widgets/meta_nav.html" %}
+ </div>
+ <div class="clean"></div>
+ </div>
+</div>
+<!-- end template header.html -->
diff --git a/askbot/skins/default/templates/widgets/logo.html b/askbot/skins/default/templates/widgets/logo.html
new file mode 100644
index 00000000..dc67edf0
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/logo.html
@@ -0,0 +1,6 @@
+{% if settings.SHOW_LOGO %}
+ <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>
+{% endif %}
diff --git a/askbot/skins/default/templates/widgets/meta_nav.html b/askbot/skins/default/templates/widgets/meta_nav.html
new file mode 100644
index 00000000..b459b025
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/meta_nav.html
@@ -0,0 +1,15 @@
+<a
+ id="navTags"
+ href="{% url tags %}"
+ {% if active_tab == 'tags' %}class="on"{% endif %}
+>{% trans %}tags{% endtrans %}</a>
+<a
+ id="navUsers"
+ href="{% url users %}"
+ {% if active_tab == 'users' %}class="on"{% endif %}
+>{% trans %}users{% endtrans %}</a>
+<a
+ id="navBadges"
+ href="{% url badges %}"
+ {% if active_tab == 'badges' %}class="on"{% endif %}
+>{% trans %}badges{% endtrans %}</a>
diff --git a/askbot/skins/default/templates/widgets/question_edit_tips.html b/askbot/skins/default/templates/widgets/question_edit_tips.html
new file mode 100644
index 00000000..1270687f
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/question_edit_tips.html
@@ -0,0 +1,63 @@
+<!-- question_edit_tips.html -->
+<div id ="tips" class="box">
+ <h2>{% trans %}question tips{% endtrans %}</h2>
+ <ul>
+ <li> <b>{% trans %}please ask a relevant question{% endtrans %}</b>
+ </li>
+ <li>
+ {% trans %}please try provide enough details{% endtrans %}
+ </li>
+ <li>
+ {% trans %}be clear and concise{% endtrans %}
+ </li>
+ </ul>
+ <p class='info-box-follow-up-links'>
+<!-- will be change to a popup windows
+ <a href="{% url faq %}" target="_blank" title="{% trans %}see frequently asked questions{% endtrans %}">{% trans %}FAQ{% endtrans %} »</a>
+-->
+ </p>
+</div>
+
+<div id="markdownHelp"class="box">
+ <h2>{% trans %}Markdown tips{% endtrans %}</h2>
+ <ul>
+ {% if settings.MARKDUP_CODE_FRIENDLY or settings.ENABLE_MATHJAX %}
+ <li>
+ {% trans %}*italic*{% endtrans %}
+ </li>
+ <li>
+ {% trans %}**bold**{% endtrans %}
+ </li>
+ {% else %}
+ <li>
+ {% trans %}*italic* or _italic_{% endtrans %}
+ </li>
+ <li>
+ {% trans %}**bold** or __bold__{% endtrans %}
+ </li>
+ {% endif %}
+ <li>
+ <b>{% trans %}link{% endtrans %}</b>:[{% trans %}text{% endtrans %}](http://url.com/ "{% trans %}title{% endtrans %}")
+
+ </li>
+
+ <li>
+ <b>{% trans %}image{% endtrans %}</b>:![alt {% trans %}text{% endtrans %}](/path/img.jpg "{% trans %}title{% endtrans %}")
+
+ </li>
+ <li>
+ {% trans %}numbered list:{% endtrans %}
+ 1. Foo
+ 2. Bar
+ </li>
+ <li>
+ {% trans %}basic HTML tags are also supported{% endtrans %}
+ </li>
+ </ul>
+ <p class='info-box-follow-up-links'>
+<!-- will be change to a popup windows
+ <a href="http://en.wikipedia.org/wiki/Markdown" target="_blank">{% trans %}learn more about Markdown{% endtrans %} »</a>
+-->
+ </p>
+</div>
+<!-- end question_edit_tips.html -->
diff --git a/askbot/skins/default/templates/widgets/question_summary.html b/askbot/skins/default/templates/widgets/question_summary.html
new file mode 100644
index 00000000..067454a7
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/question_summary.html
@@ -0,0 +1,58 @@
+{% from "macros.html" import user_country_flag, tag_list_widget %}
+<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 -%}
+ no-views
+ {% else -%}
+ some-views
+ {%- endif -%}">
+ <span class="item-count">{{question.view_count|humanize_counter}}</span>
+ <div>
+ {% trans cnt=question.view_count %}view{% pluralize %}views{% endtrans %}
+ </div>
+ </div>
+ <div class="answers
+ {% if question.answer_count == 0 -%}
+ no-answers
+ {% else -%}
+ {%- if question.answer_accepted -%}
+ accepted
+ {%- else -%}
+ some-answers
+ {%- endif -%}
+ {%- endif -%}">
+ <span
+ class="item-count"
+ >{{question.answer_count|humanize_counter}}{% if question.answer_accepted%}{% endif %}</span>
+ <div>
+ {% trans cnt=question.answer_count %}answer{% pluralize %}answers{% endtrans %}
+ </div>
+ </div>
+ <div class="votes
+ {% if question.score == 0 -%}
+ no-votes
+ {% else -%}
+ some-votes
+ {%- endif -%}">
+ <span class="item-count">{{question.score|humanize_counter}}</span>
+ <div>
+ {% 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>
+ {% if question.is_anonymous %}
+ <span class="anonymous">{{ question.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)}#}
+ {% 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(), url_params=query_string) }}
+</div>
+
diff --git a/askbot/skins/default/templates/widgets/scope_nav.html b/askbot/skins/default/templates/widgets/scope_nav.html
new file mode 100644
index 00000000..bdc36cc6
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/scope_nav.html
@@ -0,0 +1,12 @@
+{% if active_tab != "ask" %}
+ <a class="scope-selector {% if scope == 'all' %}on{% endif %}"
+ href="{% url questions %}{{ query_string|replace_in_url("section:all")|replace_in_url("sort:activity-desc") }}" title="{% trans %}see all questions{% endtrans %}">ALL</a>
+ <a class="scope-selector {% if scope == 'unanswered' %}on{% endif %}"
+ href="{% url questions %}{{ query_string|replace_in_url("section:unanswered")|replace_in_url("sort:answers-asc") }}" title="{% trans %}see unanswered questions{% endtrans %}">UNANSWERED</a>
+ {% if request.user.is_authenticated() %}
+ <a class="scope-selector {% if scope == 'favorite' %}on{% endif %}"
+ href="{% url questions %}{{ query_string|replace_in_url("section:favorite") }}" title="{% trans %}see your followed questions{% endtrans %}">FOLLOWED</a>
+ {% endif %}
+{% else %}
+ <div class="scope-selector ask-message">Please ask your question here</div>
+{% endif %}
diff --git a/askbot/skins/default/templates/widgets/secondary_header.html b/askbot/skins/default/templates/widgets/secondary_header.html
new file mode 100644
index 00000000..caf190bc
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/secondary_header.html
@@ -0,0 +1,12 @@
+<!-- template secondary_header.html -->
+<div id="secondaryHeader">
+ <div class="content-wrapper">
+ <a id="homeButton" href="{% url questions %}"></a>
+ <div id="scopeWrapper">
+ {% include "widgets/scope_nav.html" %}
+ {% include "widgets/search_bar.html" %} {# include search form widget #}
+ </div>
+ {% include "widgets/ask_button.html" %}
+ <div class="clean"></div>
+ </div>
+</div>
diff --git a/askbot/skins/default/templates/widgets/system_messages.html b/askbot/skins/default/templates/widgets/system_messages.html
new file mode 100644
index 00000000..10ba4a84
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/system_messages.html
@@ -0,0 +1,8 @@
+<div class="notify" style="display:none">
+ {% if user_messages %}
+ {% for message in user_messages %}
+ <p class="notification">{{ message }}</p>
+ {% endfor %}
+ {% endif %}
+ <a id="closeNotify" onclick="notify.close(true)"></a>
+</div>
diff --git a/askbot/skins/default/templates/widgets/user_list.html b/askbot/skins/default/templates/widgets/user_list.html
new file mode 100644
index 00000000..7874946b
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/user_list.html
@@ -0,0 +1,22 @@
+{%from "macros.html" import gravatar %}
+<div class="userList">
+ <table class="list-table">
+ <tr>
+ <td class="list-td">
+ {% for user in users %}
+ <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>
+ </ul>
+ </div>
+ {% if loop.index is divisibleby 7 %}
+ </td>
+ <td>
+ {% endif %}
+ {% endfor %}
+ </td>
+ </tr>
+ </table>
+</div>
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
new file mode 100644
index 00000000..121ae48f
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html
@@ -0,0 +1,21 @@
+<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 -%}
+</span></a>
+{%- endif -%}
diff --git a/askbot/skins/default/templates/widgets/user_navigation.html b/askbot/skins/default/templates/widgets/user_navigation.html
new file mode 100644
index 00000000..2324291d
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/user_navigation.html
@@ -0,0 +1,15 @@
+{% if request.user.is_authenticated() %}
+ <a href="{{ request.user.get_absolute_url() }}">{{ request.user.username }}</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) }})
+ </span>
+ <a href="{{ settings.LOGOUT_URL }}?next={{ settings.LOGOUT_REDIRECT_URL }}">{% trans %}logout{% endtrans %}</a>
+{% else %}
+ <a href="{{ settings.LOGIN_URL }}">{% trans %}login{% endtrans %}</a>
+{% endif %}
+
+{% if request.user.is_authenticated() and request.user.is_administrator() %}
+ <a href="{% url site_settings %}">{% trans %}settings{% endtrans %}</a>
+{% endif %}
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
new file mode 100644
index 00000000..2f55b202
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/user_score_and_badge_summary.html
@@ -0,0 +1,19 @@
+<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 %}
+</span>
+{% endif %}
diff --git a/askbot/skins/loaders.py b/askbot/skins/loaders.py
index 64d14072..24559512 100644
--- a/askbot/skins/loaders.py
+++ b/askbot/skins/loaders.py
@@ -108,9 +108,11 @@ def get_template(template, request = None):
request variable will be used in the future to set
template according to the user preference or admins preference
- at this point request variable is not used though
+ request variable is used to localize the skin if possible
"""
skin = get_skin(request)
+ if hasattr(request,'LANGUAGE_CODE'):
+ skin.set_language(request.LANGUAGE_CODE)
return skin.get_template(template)
def render_into_skin(template, data, request, mimetype = 'text/html'):
diff --git a/askbot/skins/old/media/images/anon.png b/askbot/skins/old/media/images/anon.png
new file mode 100644
index 00000000..a2041590
--- /dev/null
+++ b/askbot/skins/old/media/images/anon.png
Binary files differ
diff --git a/askbot/skins/old/media/images/blue-up-arrow-h18px.png b/askbot/skins/old/media/images/blue-up-arrow-h18px.png
new file mode 100755
index 00000000..e1f29e86
--- /dev/null
+++ b/askbot/skins/old/media/images/blue-up-arrow-h18px.png
Binary files differ
diff --git a/askbot/skins/old/media/images/box-arrow.gif b/askbot/skins/old/media/images/box-arrow.gif
new file mode 100755
index 00000000..89dcf5b3
--- /dev/null
+++ b/askbot/skins/old/media/images/box-arrow.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/bullet_green.gif b/askbot/skins/old/media/images/bullet_green.gif
new file mode 100755
index 00000000..fa530910
--- /dev/null
+++ b/askbot/skins/old/media/images/bullet_green.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/cc-88x31.png b/askbot/skins/old/media/images/cc-88x31.png
new file mode 100755
index 00000000..0f2a0f10
--- /dev/null
+++ b/askbot/skins/old/media/images/cc-88x31.png
Binary files differ
diff --git a/askbot/skins/old/media/images/cc-by-sa.png b/askbot/skins/old/media/images/cc-by-sa.png
new file mode 100644
index 00000000..f0a944e0
--- /dev/null
+++ b/askbot/skins/old/media/images/cc-by-sa.png
Binary files differ
diff --git a/askbot/skins/old/media/images/close-small-dark.png b/askbot/skins/old/media/images/close-small-dark.png
new file mode 100755
index 00000000..280c1fc7
--- /dev/null
+++ b/askbot/skins/old/media/images/close-small-dark.png
Binary files differ
diff --git a/askbot/skins/old/media/images/close-small-hover.png b/askbot/skins/old/media/images/close-small-hover.png
new file mode 100755
index 00000000..7899aec7
--- /dev/null
+++ b/askbot/skins/old/media/images/close-small-hover.png
Binary files differ
diff --git a/askbot/skins/old/media/images/close-small.png b/askbot/skins/old/media/images/close-small.png
new file mode 100755
index 00000000..5a99d31f
--- /dev/null
+++ b/askbot/skins/old/media/images/close-small.png
Binary files differ
diff --git a/askbot/skins/old/media/images/dash.gif b/askbot/skins/old/media/images/dash.gif
new file mode 100755
index 00000000..d1ddc507
--- /dev/null
+++ b/askbot/skins/old/media/images/dash.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/dialog-warning-off.png b/askbot/skins/old/media/images/dialog-warning-off.png
new file mode 100644
index 00000000..258e4d86
--- /dev/null
+++ b/askbot/skins/old/media/images/dialog-warning-off.png
Binary files differ
diff --git a/askbot/skins/old/media/images/dialog-warning.png b/askbot/skins/old/media/images/dialog-warning.png
new file mode 100644
index 00000000..a9e4ff39
--- /dev/null
+++ b/askbot/skins/old/media/images/dialog-warning.png
Binary files differ
diff --git a/askbot/skins/old/media/images/djangomade124x25_grey.gif b/askbot/skins/old/media/images/djangomade124x25_grey.gif
new file mode 100755
index 00000000..d34bb311
--- /dev/null
+++ b/askbot/skins/old/media/images/djangomade124x25_grey.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/dot-g.gif b/askbot/skins/old/media/images/dot-g.gif
new file mode 100755
index 00000000..5d6bb28e
--- /dev/null
+++ b/askbot/skins/old/media/images/dot-g.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/dot-list.gif b/askbot/skins/old/media/images/dot-list.gif
new file mode 100755
index 00000000..f6a6b865
--- /dev/null
+++ b/askbot/skins/old/media/images/dot-list.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/edit.png b/askbot/skins/old/media/images/edit.png
new file mode 100755
index 00000000..dcb09be0
--- /dev/null
+++ b/askbot/skins/old/media/images/edit.png
Binary files differ
diff --git a/askbot/skins/old/media/images/expander-arrow-hide.gif b/askbot/skins/old/media/images/expander-arrow-hide.gif
new file mode 100755
index 00000000..feb6a618
--- /dev/null
+++ b/askbot/skins/old/media/images/expander-arrow-hide.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/expander-arrow-show.gif b/askbot/skins/old/media/images/expander-arrow-show.gif
new file mode 100755
index 00000000..6825c56e
--- /dev/null
+++ b/askbot/skins/old/media/images/expander-arrow-show.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/favicon.gif b/askbot/skins/old/media/images/favicon.gif
new file mode 100644
index 00000000..f7f9061b
--- /dev/null
+++ b/askbot/skins/old/media/images/favicon.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/favicon.ico b/askbot/skins/old/media/images/favicon.ico
new file mode 100644
index 00000000..51a57bed
--- /dev/null
+++ b/askbot/skins/old/media/images/favicon.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/feed-icon-small.png b/askbot/skins/old/media/images/feed-icon-small.png
new file mode 100755
index 00000000..b3c949d2
--- /dev/null
+++ b/askbot/skins/old/media/images/feed-icon-small.png
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ad.gif b/askbot/skins/old/media/images/flags/ad.gif
new file mode 100755
index 00000000..57b49973
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ad.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ae.gif b/askbot/skins/old/media/images/flags/ae.gif
new file mode 100755
index 00000000..78d15b67
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ae.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/af.gif b/askbot/skins/old/media/images/flags/af.gif
new file mode 100755
index 00000000..98894082
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/af.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ag.gif b/askbot/skins/old/media/images/flags/ag.gif
new file mode 100755
index 00000000..48f8e7bc
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ag.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ai.gif b/askbot/skins/old/media/images/flags/ai.gif
new file mode 100755
index 00000000..1cbc5795
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ai.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/al.gif b/askbot/skins/old/media/images/flags/al.gif
new file mode 100755
index 00000000..c44fe0a0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/al.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/am.gif b/askbot/skins/old/media/images/flags/am.gif
new file mode 100755
index 00000000..2915e30c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/am.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/an.gif b/askbot/skins/old/media/images/flags/an.gif
new file mode 100755
index 00000000..cb570c67
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/an.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ao.gif b/askbot/skins/old/media/images/flags/ao.gif
new file mode 100644
index 00000000..8c854fa1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ao.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ar.gif b/askbot/skins/old/media/images/flags/ar.gif
new file mode 100755
index 00000000..a9f71f7d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ar.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/as.gif b/askbot/skins/old/media/images/flags/as.gif
new file mode 100755
index 00000000..d776ec27
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/as.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/at.gif b/askbot/skins/old/media/images/flags/at.gif
new file mode 100755
index 00000000..87e12173
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/at.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/au.gif b/askbot/skins/old/media/images/flags/au.gif
new file mode 100755
index 00000000..5269c6a0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/au.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/aw.gif b/askbot/skins/old/media/images/flags/aw.gif
new file mode 100755
index 00000000..27fdb4d1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/aw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ax.gif b/askbot/skins/old/media/images/flags/ax.gif
new file mode 100755
index 00000000..0ceb6849
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ax.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/az.gif b/askbot/skins/old/media/images/flags/az.gif
new file mode 100755
index 00000000..d7716184
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/az.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ba.gif b/askbot/skins/old/media/images/flags/ba.gif
new file mode 100755
index 00000000..9bf5f0ac
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ba.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bb.gif b/askbot/skins/old/media/images/flags/bb.gif
new file mode 100755
index 00000000..b7d08e57
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bb.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bd.gif b/askbot/skins/old/media/images/flags/bd.gif
new file mode 100755
index 00000000..0fd27eca
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bd.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/be.gif b/askbot/skins/old/media/images/flags/be.gif
new file mode 100755
index 00000000..ae09bfbe
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/be.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bf.gif b/askbot/skins/old/media/images/flags/bf.gif
new file mode 100755
index 00000000..9d6772cd
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bg.gif b/askbot/skins/old/media/images/flags/bg.gif
new file mode 100755
index 00000000..11cf8ff3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bh.gif b/askbot/skins/old/media/images/flags/bh.gif
new file mode 100755
index 00000000..56aa72b2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bh.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bi.gif b/askbot/skins/old/media/images/flags/bi.gif
new file mode 100755
index 00000000..6e2cbe12
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bi.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bj.gif b/askbot/skins/old/media/images/flags/bj.gif
new file mode 100755
index 00000000..e676116f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bj.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bm.gif b/askbot/skins/old/media/images/flags/bm.gif
new file mode 100755
index 00000000..9feb87bc
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bn.gif b/askbot/skins/old/media/images/flags/bn.gif
new file mode 100755
index 00000000..b7b6b0f9
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bo.gif b/askbot/skins/old/media/images/flags/bo.gif
new file mode 100755
index 00000000..4844f856
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bo.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/br.gif b/askbot/skins/old/media/images/flags/br.gif
new file mode 100755
index 00000000..8c866162
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/br.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bs.gif b/askbot/skins/old/media/images/flags/bs.gif
new file mode 100755
index 00000000..c0a741e5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bs.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bt.gif b/askbot/skins/old/media/images/flags/bt.gif
new file mode 100755
index 00000000..abe2f3cc
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bv.gif b/askbot/skins/old/media/images/flags/bv.gif
new file mode 100755
index 00000000..6202d1f3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bv.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bw.gif b/askbot/skins/old/media/images/flags/bw.gif
new file mode 100755
index 00000000..986ab63c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/by.gif b/askbot/skins/old/media/images/flags/by.gif
new file mode 100755
index 00000000..43ffcd4c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/by.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/bz.gif b/askbot/skins/old/media/images/flags/bz.gif
new file mode 100755
index 00000000..791737f0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/bz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ca.gif b/askbot/skins/old/media/images/flags/ca.gif
new file mode 100755
index 00000000..457d9662
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ca.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/catalonia.gif b/askbot/skins/old/media/images/flags/catalonia.gif
new file mode 100644
index 00000000..73df9a04
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/catalonia.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cc.gif b/askbot/skins/old/media/images/flags/cc.gif
new file mode 100755
index 00000000..3f783270
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cd.gif b/askbot/skins/old/media/images/flags/cd.gif
new file mode 100644
index 00000000..1df717ae
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cd.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cf.gif b/askbot/skins/old/media/images/flags/cf.gif
new file mode 100755
index 00000000..35787ca4
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cg.gif b/askbot/skins/old/media/images/flags/cg.gif
new file mode 100755
index 00000000..e0a62a51
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ch.gif b/askbot/skins/old/media/images/flags/ch.gif
new file mode 100755
index 00000000..d5c0e5b7
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ch.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ci.gif b/askbot/skins/old/media/images/flags/ci.gif
new file mode 100755
index 00000000..844120a5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ci.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ck.gif b/askbot/skins/old/media/images/flags/ck.gif
new file mode 100755
index 00000000..2edb7399
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ck.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cl.gif b/askbot/skins/old/media/images/flags/cl.gif
new file mode 100755
index 00000000..cbc370e6
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cl.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cm.gif b/askbot/skins/old/media/images/flags/cm.gif
new file mode 100755
index 00000000..1fb102b2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cn.gif b/askbot/skins/old/media/images/flags/cn.gif
new file mode 100755
index 00000000..b0525309
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/co.gif b/askbot/skins/old/media/images/flags/co.gif
new file mode 100755
index 00000000..d0e15caf
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/co.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cr.gif b/askbot/skins/old/media/images/flags/cr.gif
new file mode 100755
index 00000000..0728dd6a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cs.gif b/askbot/skins/old/media/images/flags/cs.gif
new file mode 100755
index 00000000..101db649
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cs.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cu.gif b/askbot/skins/old/media/images/flags/cu.gif
new file mode 100755
index 00000000..291255ca
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cv.gif b/askbot/skins/old/media/images/flags/cv.gif
new file mode 100755
index 00000000..43c6c6cb
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cv.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cx.gif b/askbot/skins/old/media/images/flags/cx.gif
new file mode 100755
index 00000000..a5b43089
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cx.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cy.gif b/askbot/skins/old/media/images/flags/cy.gif
new file mode 100755
index 00000000..35c661e1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cy.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/cz.gif b/askbot/skins/old/media/images/flags/cz.gif
new file mode 100755
index 00000000..0a605e58
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/cz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/de.gif b/askbot/skins/old/media/images/flags/de.gif
new file mode 100755
index 00000000..75728ddf
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/de.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/dj.gif b/askbot/skins/old/media/images/flags/dj.gif
new file mode 100755
index 00000000..212406d9
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/dj.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/dk.gif b/askbot/skins/old/media/images/flags/dk.gif
new file mode 100755
index 00000000..03e75bd2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/dk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/dm.gif b/askbot/skins/old/media/images/flags/dm.gif
new file mode 100755
index 00000000..2f87f3ca
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/dm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/do.gif b/askbot/skins/old/media/images/flags/do.gif
new file mode 100755
index 00000000..f7d0bad3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/do.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/dz.gif b/askbot/skins/old/media/images/flags/dz.gif
new file mode 100755
index 00000000..ed580a7c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/dz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ec.gif b/askbot/skins/old/media/images/flags/ec.gif
new file mode 100755
index 00000000..9e41e0ec
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ec.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ee.gif b/askbot/skins/old/media/images/flags/ee.gif
new file mode 100755
index 00000000..9397a2d0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ee.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/eg.gif b/askbot/skins/old/media/images/flags/eg.gif
new file mode 100755
index 00000000..6857c7dd
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/eg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/eh.gif b/askbot/skins/old/media/images/flags/eh.gif
new file mode 100755
index 00000000..dd0391c2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/eh.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/england.gif b/askbot/skins/old/media/images/flags/england.gif
new file mode 100755
index 00000000..933a4f0b
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/england.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/er.gif b/askbot/skins/old/media/images/flags/er.gif
new file mode 100755
index 00000000..3d4d612c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/er.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/es.gif b/askbot/skins/old/media/images/flags/es.gif
new file mode 100755
index 00000000..c27d65e5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/es.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/et.gif b/askbot/skins/old/media/images/flags/et.gif
new file mode 100755
index 00000000..f77995d0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/et.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/europeanunion.gif b/askbot/skins/old/media/images/flags/europeanunion.gif
new file mode 100644
index 00000000..28a762a5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/europeanunion.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fam.gif b/askbot/skins/old/media/images/flags/fam.gif
new file mode 100755
index 00000000..7d528852
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fam.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fi.gif b/askbot/skins/old/media/images/flags/fi.gif
new file mode 100755
index 00000000..8d3a1918
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fi.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fj.gif b/askbot/skins/old/media/images/flags/fj.gif
new file mode 100755
index 00000000..486151cb
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fj.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fk.gif b/askbot/skins/old/media/images/flags/fk.gif
new file mode 100755
index 00000000..37b5ecf3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fm.gif b/askbot/skins/old/media/images/flags/fm.gif
new file mode 100755
index 00000000..7f8723b7
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fo.gif b/askbot/skins/old/media/images/flags/fo.gif
new file mode 100755
index 00000000..4a90fc04
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fo.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/fr.gif b/askbot/skins/old/media/images/flags/fr.gif
new file mode 100755
index 00000000..43d0b801
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/fr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ga.gif b/askbot/skins/old/media/images/flags/ga.gif
new file mode 100755
index 00000000..23fd5f0d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ga.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gb.gif b/askbot/skins/old/media/images/flags/gb.gif
new file mode 100644
index 00000000..3c6bce15
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gb.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gd.gif b/askbot/skins/old/media/images/flags/gd.gif
new file mode 100755
index 00000000..25ea3123
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gd.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ge.gif b/askbot/skins/old/media/images/flags/ge.gif
new file mode 100755
index 00000000..faa7f126
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ge.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gf.gif b/askbot/skins/old/media/images/flags/gf.gif
new file mode 100755
index 00000000..43d0b801
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gh.gif b/askbot/skins/old/media/images/flags/gh.gif
new file mode 100755
index 00000000..273fb7d1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gh.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gi.gif b/askbot/skins/old/media/images/flags/gi.gif
new file mode 100755
index 00000000..7b1984bc
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gi.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gl.gif b/askbot/skins/old/media/images/flags/gl.gif
new file mode 100755
index 00000000..ef445be0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gl.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gm.gif b/askbot/skins/old/media/images/flags/gm.gif
new file mode 100755
index 00000000..6847c5a8
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gn.gif b/askbot/skins/old/media/images/flags/gn.gif
new file mode 100755
index 00000000..a982ac6f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gp.gif b/askbot/skins/old/media/images/flags/gp.gif
new file mode 100755
index 00000000..31166db6
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gp.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gq.gif b/askbot/skins/old/media/images/flags/gq.gif
new file mode 100755
index 00000000..8b4e0cc4
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gq.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gr.gif b/askbot/skins/old/media/images/flags/gr.gif
new file mode 100755
index 00000000..b4c8c04e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gs.gif b/askbot/skins/old/media/images/flags/gs.gif
new file mode 100755
index 00000000..ccc96ec0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gs.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gt.gif b/askbot/skins/old/media/images/flags/gt.gif
new file mode 100755
index 00000000..7e94d1dd
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gu.gif b/askbot/skins/old/media/images/flags/gu.gif
new file mode 100755
index 00000000..eafef683
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gw.gif b/askbot/skins/old/media/images/flags/gw.gif
new file mode 100755
index 00000000..55f75711
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/gy.gif b/askbot/skins/old/media/images/flags/gy.gif
new file mode 100755
index 00000000..1cb4cd71
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/gy.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/hk.gif b/askbot/skins/old/media/images/flags/hk.gif
new file mode 100755
index 00000000..798af96d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/hk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/hm.gif b/askbot/skins/old/media/images/flags/hm.gif
new file mode 100755
index 00000000..5269c6a0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/hm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/hn.gif b/askbot/skins/old/media/images/flags/hn.gif
new file mode 100755
index 00000000..6c4ffe8e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/hn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/hr.gif b/askbot/skins/old/media/images/flags/hr.gif
new file mode 100755
index 00000000..557c6602
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/hr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ht.gif b/askbot/skins/old/media/images/flags/ht.gif
new file mode 100755
index 00000000..059604ab
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ht.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/hu.gif b/askbot/skins/old/media/images/flags/hu.gif
new file mode 100755
index 00000000..6142d868
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/hu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/id.gif b/askbot/skins/old/media/images/flags/id.gif
new file mode 100755
index 00000000..865161b0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/id.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ie.gif b/askbot/skins/old/media/images/flags/ie.gif
new file mode 100755
index 00000000..506ad285
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ie.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/il.gif b/askbot/skins/old/media/images/flags/il.gif
new file mode 100755
index 00000000..c8483ae5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/il.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/in.gif b/askbot/skins/old/media/images/flags/in.gif
new file mode 100755
index 00000000..1cd80272
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/in.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/io.gif b/askbot/skins/old/media/images/flags/io.gif
new file mode 100755
index 00000000..de7e7ab3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/io.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/iq.gif b/askbot/skins/old/media/images/flags/iq.gif
new file mode 100755
index 00000000..c34fe3c4
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/iq.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ir.gif b/askbot/skins/old/media/images/flags/ir.gif
new file mode 100755
index 00000000..156040fc
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ir.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/is.gif b/askbot/skins/old/media/images/flags/is.gif
new file mode 100755
index 00000000..b42502de
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/is.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/it.gif b/askbot/skins/old/media/images/flags/it.gif
new file mode 100755
index 00000000..d79e90e9
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/it.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/jm.gif b/askbot/skins/old/media/images/flags/jm.gif
new file mode 100755
index 00000000..0bed67c2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/jm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/jo.gif b/askbot/skins/old/media/images/flags/jo.gif
new file mode 100755
index 00000000..03daf8af
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/jo.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/jp.gif b/askbot/skins/old/media/images/flags/jp.gif
new file mode 100755
index 00000000..444c1d05
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/jp.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ke.gif b/askbot/skins/old/media/images/flags/ke.gif
new file mode 100755
index 00000000..c2b5d45c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ke.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kg.gif b/askbot/skins/old/media/images/flags/kg.gif
new file mode 100755
index 00000000..72a4d412
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kh.gif b/askbot/skins/old/media/images/flags/kh.gif
new file mode 100755
index 00000000..30a18315
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kh.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ki.gif b/askbot/skins/old/media/images/flags/ki.gif
new file mode 100755
index 00000000..4a0751a2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ki.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/km.gif b/askbot/skins/old/media/images/flags/km.gif
new file mode 100755
index 00000000..5859595e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/km.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kn.gif b/askbot/skins/old/media/images/flags/kn.gif
new file mode 100755
index 00000000..bb9cc34a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kp.gif b/askbot/skins/old/media/images/flags/kp.gif
new file mode 100755
index 00000000..6e0ca09e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kp.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kr.gif b/askbot/skins/old/media/images/flags/kr.gif
new file mode 100755
index 00000000..1cddbe75
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kw.gif b/askbot/skins/old/media/images/flags/kw.gif
new file mode 100755
index 00000000..1efc7347
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ky.gif b/askbot/skins/old/media/images/flags/ky.gif
new file mode 100755
index 00000000..d3d02ee4
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ky.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/kz.gif b/askbot/skins/old/media/images/flags/kz.gif
new file mode 100755
index 00000000..24baebe0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/kz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/la.gif b/askbot/skins/old/media/images/flags/la.gif
new file mode 100755
index 00000000..d14cf4d8
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/la.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lb.gif b/askbot/skins/old/media/images/flags/lb.gif
new file mode 100755
index 00000000..003d83af
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lb.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lc.gif b/askbot/skins/old/media/images/flags/lc.gif
new file mode 100644
index 00000000..f5fe5bff
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/li.gif b/askbot/skins/old/media/images/flags/li.gif
new file mode 100755
index 00000000..713c58e1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/li.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lk.gif b/askbot/skins/old/media/images/flags/lk.gif
new file mode 100755
index 00000000..1b3ee7f5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lr.gif b/askbot/skins/old/media/images/flags/lr.gif
new file mode 100755
index 00000000..435af9e5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ls.gif b/askbot/skins/old/media/images/flags/ls.gif
new file mode 100755
index 00000000..427ae957
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ls.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lt.gif b/askbot/skins/old/media/images/flags/lt.gif
new file mode 100755
index 00000000..dee9c601
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lu.gif b/askbot/skins/old/media/images/flags/lu.gif
new file mode 100755
index 00000000..7d7293ed
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/lv.gif b/askbot/skins/old/media/images/flags/lv.gif
new file mode 100755
index 00000000..17e71b7e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/lv.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ly.gif b/askbot/skins/old/media/images/flags/ly.gif
new file mode 100755
index 00000000..a654c30a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ly.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ma.gif b/askbot/skins/old/media/images/flags/ma.gif
new file mode 100755
index 00000000..fc784119
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ma.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mc.gif b/askbot/skins/old/media/images/flags/mc.gif
new file mode 100755
index 00000000..02a7c8e1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/md.gif b/askbot/skins/old/media/images/flags/md.gif
new file mode 100755
index 00000000..e4b8a7e3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/md.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/me.gif b/askbot/skins/old/media/images/flags/me.gif
new file mode 100644
index 00000000..a260453c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/me.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mg.gif b/askbot/skins/old/media/images/flags/mg.gif
new file mode 100755
index 00000000..a91b577d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mh.gif b/askbot/skins/old/media/images/flags/mh.gif
new file mode 100755
index 00000000..92f5f485
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mh.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mk.gif b/askbot/skins/old/media/images/flags/mk.gif
new file mode 100755
index 00000000..7aeb8311
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ml.gif b/askbot/skins/old/media/images/flags/ml.gif
new file mode 100755
index 00000000..53d6f490
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ml.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mm.gif b/askbot/skins/old/media/images/flags/mm.gif
new file mode 100755
index 00000000..9e0a2756
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mn.gif b/askbot/skins/old/media/images/flags/mn.gif
new file mode 100755
index 00000000..dff8ea5a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mo.gif b/askbot/skins/old/media/images/flags/mo.gif
new file mode 100755
index 00000000..66cf5b4f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mo.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mp.gif b/askbot/skins/old/media/images/flags/mp.gif
new file mode 100755
index 00000000..73b7147e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mp.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mq.gif b/askbot/skins/old/media/images/flags/mq.gif
new file mode 100755
index 00000000..570bc5dd
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mq.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mr.gif b/askbot/skins/old/media/images/flags/mr.gif
new file mode 100755
index 00000000..f52fcf09
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ms.gif b/askbot/skins/old/media/images/flags/ms.gif
new file mode 100755
index 00000000..5e5a67aa
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ms.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mt.gif b/askbot/skins/old/media/images/flags/mt.gif
new file mode 100755
index 00000000..45c709f2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mu.gif b/askbot/skins/old/media/images/flags/mu.gif
new file mode 100755
index 00000000..081ab453
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mv.gif b/askbot/skins/old/media/images/flags/mv.gif
new file mode 100755
index 00000000..46b63875
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mv.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mw.gif b/askbot/skins/old/media/images/flags/mw.gif
new file mode 100755
index 00000000..ad045a09
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mx.gif b/askbot/skins/old/media/images/flags/mx.gif
new file mode 100755
index 00000000..ddc75d04
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mx.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/my.gif b/askbot/skins/old/media/images/flags/my.gif
new file mode 100755
index 00000000..fc7d5236
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/my.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/mz.gif b/askbot/skins/old/media/images/flags/mz.gif
new file mode 100755
index 00000000..7d635082
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/mz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/na.gif b/askbot/skins/old/media/images/flags/na.gif
new file mode 100755
index 00000000..c0babe72
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/na.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/nc.gif b/askbot/skins/old/media/images/flags/nc.gif
new file mode 100755
index 00000000..b1e91b9a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/nc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ne.gif b/askbot/skins/old/media/images/flags/ne.gif
new file mode 100755
index 00000000..ff4eaf07
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ne.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/nf.gif b/askbot/skins/old/media/images/flags/nf.gif
new file mode 100755
index 00000000..c83424c2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/nf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ng.gif b/askbot/skins/old/media/images/flags/ng.gif
new file mode 100755
index 00000000..bdde7cb3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ng.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ni.gif b/askbot/skins/old/media/images/flags/ni.gif
new file mode 100755
index 00000000..d05894d0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ni.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/nl.gif b/askbot/skins/old/media/images/flags/nl.gif
new file mode 100755
index 00000000..c1c8f46d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/nl.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/no.gif b/askbot/skins/old/media/images/flags/no.gif
new file mode 100755
index 00000000..6202d1f3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/no.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/np.gif b/askbot/skins/old/media/images/flags/np.gif
new file mode 100755
index 00000000..1096893a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/np.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/nr.gif b/askbot/skins/old/media/images/flags/nr.gif
new file mode 100755
index 00000000..2e4c0c5c
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/nr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/nu.gif b/askbot/skins/old/media/images/flags/nu.gif
new file mode 100755
index 00000000..618210a7
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/nu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/nz.gif b/askbot/skins/old/media/images/flags/nz.gif
new file mode 100755
index 00000000..028a5dc6
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/nz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/om.gif b/askbot/skins/old/media/images/flags/om.gif
new file mode 100755
index 00000000..2b8c7750
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/om.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pa.gif b/askbot/skins/old/media/images/flags/pa.gif
new file mode 100755
index 00000000..d518b2f9
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pa.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pe.gif b/askbot/skins/old/media/images/flags/pe.gif
new file mode 100755
index 00000000..3bc76390
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pe.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pf.gif b/askbot/skins/old/media/images/flags/pf.gif
new file mode 100755
index 00000000..849297a5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pg.gif b/askbot/skins/old/media/images/flags/pg.gif
new file mode 100755
index 00000000..2d20b078
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ph.gif b/askbot/skins/old/media/images/flags/ph.gif
new file mode 100755
index 00000000..12b380ac
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ph.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pk.gif b/askbot/skins/old/media/images/flags/pk.gif
new file mode 100755
index 00000000..f3f62c2e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pl.gif b/askbot/skins/old/media/images/flags/pl.gif
new file mode 100755
index 00000000..bf106463
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pl.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pm.gif b/askbot/skins/old/media/images/flags/pm.gif
new file mode 100755
index 00000000..99bf6fdb
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pn.gif b/askbot/skins/old/media/images/flags/pn.gif
new file mode 100755
index 00000000..4bc86a1d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pr.gif b/askbot/skins/old/media/images/flags/pr.gif
new file mode 100755
index 00000000..6d5d5896
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ps.gif b/askbot/skins/old/media/images/flags/ps.gif
new file mode 100755
index 00000000..6afa3b71
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ps.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pt.gif b/askbot/skins/old/media/images/flags/pt.gif
new file mode 100755
index 00000000..e735f740
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/pw.gif b/askbot/skins/old/media/images/flags/pw.gif
new file mode 100755
index 00000000..5854510f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/pw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/py.gif b/askbot/skins/old/media/images/flags/py.gif
new file mode 100755
index 00000000..f2e66af7
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/py.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/qa.gif b/askbot/skins/old/media/images/flags/qa.gif
new file mode 100755
index 00000000..2e843ff9
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/qa.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/re.gif b/askbot/skins/old/media/images/flags/re.gif
new file mode 100755
index 00000000..43d0b801
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/re.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ro.gif b/askbot/skins/old/media/images/flags/ro.gif
new file mode 100755
index 00000000..f5d5f125
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ro.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/rs.gif b/askbot/skins/old/media/images/flags/rs.gif
new file mode 100644
index 00000000..3bd1fb2f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/rs.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ru.gif b/askbot/skins/old/media/images/flags/ru.gif
new file mode 100755
index 00000000..b525c462
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ru.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/rw.gif b/askbot/skins/old/media/images/flags/rw.gif
new file mode 100755
index 00000000..0d095f7a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/rw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sa.gif b/askbot/skins/old/media/images/flags/sa.gif
new file mode 100755
index 00000000..179961b6
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sa.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sb.gif b/askbot/skins/old/media/images/flags/sb.gif
new file mode 100755
index 00000000..8f5ff837
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sb.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sc.gif b/askbot/skins/old/media/images/flags/sc.gif
new file mode 100755
index 00000000..31b47677
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/scotland.gif b/askbot/skins/old/media/images/flags/scotland.gif
new file mode 100755
index 00000000..03f3f1de
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/scotland.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sd.gif b/askbot/skins/old/media/images/flags/sd.gif
new file mode 100755
index 00000000..53ae214f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sd.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/se.gif b/askbot/skins/old/media/images/flags/se.gif
new file mode 100755
index 00000000..80f62852
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/se.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sg.gif b/askbot/skins/old/media/images/flags/sg.gif
new file mode 100755
index 00000000..5663d39f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sh.gif b/askbot/skins/old/media/images/flags/sh.gif
new file mode 100755
index 00000000..dcc7f3bc
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sh.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/si.gif b/askbot/skins/old/media/images/flags/si.gif
new file mode 100755
index 00000000..23852b50
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/si.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sj.gif b/askbot/skins/old/media/images/flags/sj.gif
new file mode 100755
index 00000000..6202d1f3
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sj.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sk.gif b/askbot/skins/old/media/images/flags/sk.gif
new file mode 100755
index 00000000..1b3f22ba
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sl.gif b/askbot/skins/old/media/images/flags/sl.gif
new file mode 100755
index 00000000..f0f34923
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sl.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sm.gif b/askbot/skins/old/media/images/flags/sm.gif
new file mode 100755
index 00000000..04d98de5
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sn.gif b/askbot/skins/old/media/images/flags/sn.gif
new file mode 100755
index 00000000..6dac8709
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/so.gif b/askbot/skins/old/media/images/flags/so.gif
new file mode 100755
index 00000000..f1961694
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/so.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sr.gif b/askbot/skins/old/media/images/flags/sr.gif
new file mode 100755
index 00000000..0f7499ad
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/st.gif b/askbot/skins/old/media/images/flags/st.gif
new file mode 100755
index 00000000..4f1e6e09
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/st.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sv.gif b/askbot/skins/old/media/images/flags/sv.gif
new file mode 100755
index 00000000..2d7b159a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sv.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sy.gif b/askbot/skins/old/media/images/flags/sy.gif
new file mode 100755
index 00000000..dc8bd509
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sy.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/sz.gif b/askbot/skins/old/media/images/flags/sz.gif
new file mode 100755
index 00000000..f37aaf80
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/sz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tc.gif b/askbot/skins/old/media/images/flags/tc.gif
new file mode 100755
index 00000000..11a8c232
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/td.gif b/askbot/skins/old/media/images/flags/td.gif
new file mode 100755
index 00000000..7aa8a10d
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/td.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tf.gif b/askbot/skins/old/media/images/flags/tf.gif
new file mode 100755
index 00000000..51a43250
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tg.gif b/askbot/skins/old/media/images/flags/tg.gif
new file mode 100755
index 00000000..ca6b4e77
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/th.gif b/askbot/skins/old/media/images/flags/th.gif
new file mode 100755
index 00000000..01307924
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/th.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tj.gif b/askbot/skins/old/media/images/flags/tj.gif
new file mode 100755
index 00000000..2fe38d4a
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tj.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tk.gif b/askbot/skins/old/media/images/flags/tk.gif
new file mode 100755
index 00000000..3d3a727f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tk.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tl.gif b/askbot/skins/old/media/images/flags/tl.gif
new file mode 100755
index 00000000..df22d582
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tl.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tm.gif b/askbot/skins/old/media/images/flags/tm.gif
new file mode 100755
index 00000000..36d0994f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tn.gif b/askbot/skins/old/media/images/flags/tn.gif
new file mode 100755
index 00000000..917d4288
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/to.gif b/askbot/skins/old/media/images/flags/to.gif
new file mode 100755
index 00000000..d7ed4d11
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/to.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tr.gif b/askbot/skins/old/media/images/flags/tr.gif
new file mode 100755
index 00000000..e407d553
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tr.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tt.gif b/askbot/skins/old/media/images/flags/tt.gif
new file mode 100755
index 00000000..47d3b806
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tv.gif b/askbot/skins/old/media/images/flags/tv.gif
new file mode 100755
index 00000000..3c338277
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tv.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tw.gif b/askbot/skins/old/media/images/flags/tw.gif
new file mode 100755
index 00000000..cacfd9b7
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/tz.gif b/askbot/skins/old/media/images/flags/tz.gif
new file mode 100755
index 00000000..82b52ca2
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/tz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ua.gif b/askbot/skins/old/media/images/flags/ua.gif
new file mode 100755
index 00000000..5d6cd83f
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ua.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ug.gif b/askbot/skins/old/media/images/flags/ug.gif
new file mode 100755
index 00000000..58b731ad
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ug.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/um.gif b/askbot/skins/old/media/images/flags/um.gif
new file mode 100755
index 00000000..3b4c8483
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/um.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/us.gif b/askbot/skins/old/media/images/flags/us.gif
new file mode 100755
index 00000000..8f198f73
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/us.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/uy.gif b/askbot/skins/old/media/images/flags/uy.gif
new file mode 100755
index 00000000..12848c74
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/uy.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/uz.gif b/askbot/skins/old/media/images/flags/uz.gif
new file mode 100755
index 00000000..dc9daeca
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/uz.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/va.gif b/askbot/skins/old/media/images/flags/va.gif
new file mode 100755
index 00000000..2bd74468
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/va.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/vc.gif b/askbot/skins/old/media/images/flags/vc.gif
new file mode 100755
index 00000000..48213816
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/vc.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ve.gif b/askbot/skins/old/media/images/flags/ve.gif
new file mode 100755
index 00000000..19ce6c14
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ve.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/vg.gif b/askbot/skins/old/media/images/flags/vg.gif
new file mode 100755
index 00000000..1fc0f96e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/vg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/vi.gif b/askbot/skins/old/media/images/flags/vi.gif
new file mode 100755
index 00000000..66f9e746
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/vi.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/vn.gif b/askbot/skins/old/media/images/flags/vn.gif
new file mode 100755
index 00000000..f1e20c94
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/vn.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/vu.gif b/askbot/skins/old/media/images/flags/vu.gif
new file mode 100755
index 00000000..8a8b2b06
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/vu.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/wales.gif b/askbot/skins/old/media/images/flags/wales.gif
new file mode 100755
index 00000000..901d1750
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/wales.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/wf.gif b/askbot/skins/old/media/images/flags/wf.gif
new file mode 100755
index 00000000..eaa954b1
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/wf.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ws.gif b/askbot/skins/old/media/images/flags/ws.gif
new file mode 100755
index 00000000..a51f939e
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ws.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/ye.gif b/askbot/skins/old/media/images/flags/ye.gif
new file mode 100755
index 00000000..7b0183d0
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/ye.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/yt.gif b/askbot/skins/old/media/images/flags/yt.gif
new file mode 100755
index 00000000..a2267c05
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/yt.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/za.gif b/askbot/skins/old/media/images/flags/za.gif
new file mode 100755
index 00000000..ede52589
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/za.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/zm.gif b/askbot/skins/old/media/images/flags/zm.gif
new file mode 100755
index 00000000..b2851d2b
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/zm.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/flags/zw.gif b/askbot/skins/old/media/images/flags/zw.gif
new file mode 100755
index 00000000..02901f62
--- /dev/null
+++ b/askbot/skins/old/media/images/flags/zw.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/go-up-grey.png b/askbot/skins/old/media/images/go-up-grey.png
new file mode 100644
index 00000000..763bb799
--- /dev/null
+++ b/askbot/skins/old/media/images/go-up-grey.png
Binary files differ
diff --git a/askbot/skins/old/media/images/go-up-orange.png b/askbot/skins/old/media/images/go-up-orange.png
new file mode 100644
index 00000000..eca3579d
--- /dev/null
+++ b/askbot/skins/old/media/images/go-up-orange.png
Binary files differ
diff --git a/askbot/skins/old/media/images/gray-up-arrow-h18px.png b/askbot/skins/old/media/images/gray-up-arrow-h18px.png
new file mode 100755
index 00000000..78767445
--- /dev/null
+++ b/askbot/skins/old/media/images/gray-up-arrow-h18px.png
Binary files differ
diff --git a/askbot/skins/old/media/images/grippie.png b/askbot/skins/old/media/images/grippie.png
new file mode 100755
index 00000000..6524d416
--- /dev/null
+++ b/askbot/skins/old/media/images/grippie.png
Binary files differ
diff --git a/askbot/skins/old/media/images/indicator.gif b/askbot/skins/old/media/images/indicator.gif
new file mode 100755
index 00000000..1c72ebb5
--- /dev/null
+++ b/askbot/skins/old/media/images/indicator.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/logo.gif b/askbot/skins/old/media/images/logo.gif
new file mode 100644
index 00000000..03eb79f4
--- /dev/null
+++ b/askbot/skins/old/media/images/logo.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/logo.png b/askbot/skins/old/media/images/logo.png
new file mode 100644
index 00000000..10559161
--- /dev/null
+++ b/askbot/skins/old/media/images/logo.png
Binary files differ
diff --git a/askbot/skins/old/media/images/logo1.png b/askbot/skins/old/media/images/logo1.png
new file mode 100755
index 00000000..d79a6271
--- /dev/null
+++ b/askbot/skins/old/media/images/logo1.png
Binary files differ
diff --git a/askbot/skins/old/media/images/logo2.png b/askbot/skins/old/media/images/logo2.png
new file mode 100755
index 00000000..bd3cccd9
--- /dev/null
+++ b/askbot/skins/old/media/images/logo2.png
Binary files differ
diff --git a/askbot/skins/old/media/images/mail-envelope-empty.png b/askbot/skins/old/media/images/mail-envelope-empty.png
new file mode 100644
index 00000000..0fde87dc
--- /dev/null
+++ b/askbot/skins/old/media/images/mail-envelope-empty.png
Binary files differ
diff --git a/askbot/skins/old/media/images/mail-envelope-full.png b/askbot/skins/old/media/images/mail-envelope-full.png
new file mode 100644
index 00000000..2277e919
--- /dev/null
+++ b/askbot/skins/old/media/images/mail-envelope-full.png
Binary files differ
diff --git a/askbot/skins/old/media/images/medala.gif b/askbot/skins/old/media/images/medala.gif
new file mode 100755
index 00000000..93dd1a39
--- /dev/null
+++ b/askbot/skins/old/media/images/medala.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/medala_on.gif b/askbot/skins/old/media/images/medala_on.gif
new file mode 100755
index 00000000..a18f9e85
--- /dev/null
+++ b/askbot/skins/old/media/images/medala_on.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/new.gif b/askbot/skins/old/media/images/new.gif
new file mode 100755
index 00000000..8a220b53
--- /dev/null
+++ b/askbot/skins/old/media/images/new.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/nophoto.png b/askbot/skins/old/media/images/nophoto.png
new file mode 100755
index 00000000..2daf0ffd
--- /dev/null
+++ b/askbot/skins/old/media/images/nophoto.png
Binary files differ
diff --git a/askbot/skins/old/media/images/openid.gif b/askbot/skins/old/media/images/openid.gif
new file mode 100755
index 00000000..8540e12b
--- /dev/null
+++ b/askbot/skins/old/media/images/openid.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/aol.gif b/askbot/skins/old/media/images/openid/aol.gif
new file mode 100755
index 00000000..decc4f12
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/aol.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/blogger.ico b/askbot/skins/old/media/images/openid/blogger.ico
new file mode 100755
index 00000000..1b9730b0
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/blogger.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/claimid.ico b/askbot/skins/old/media/images/openid/claimid.ico
new file mode 100755
index 00000000..2b80f491
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/claimid.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/facebook.gif b/askbot/skins/old/media/images/openid/facebook.gif
new file mode 100755
index 00000000..b997b358
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/facebook.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/flickr.ico b/askbot/skins/old/media/images/openid/flickr.ico
new file mode 100755
index 00000000..11f6e07f
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/flickr.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/google.gif b/askbot/skins/old/media/images/openid/google.gif
new file mode 100755
index 00000000..1b6cd07b
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/google.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/livejournal.ico b/askbot/skins/old/media/images/openid/livejournal.ico
new file mode 100755
index 00000000..f3d21ec5
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/livejournal.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/myopenid.ico b/askbot/skins/old/media/images/openid/myopenid.ico
new file mode 100755
index 00000000..ceb06e6a
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/myopenid.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/openid-inputicon.gif b/askbot/skins/old/media/images/openid/openid-inputicon.gif
new file mode 100755
index 00000000..cde836c8
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/openid-inputicon.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/openid.gif b/askbot/skins/old/media/images/openid/openid.gif
new file mode 100755
index 00000000..c718b0e6
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/openid.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/technorati.ico b/askbot/skins/old/media/images/openid/technorati.ico
new file mode 100755
index 00000000..fa1083c1
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/technorati.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/twitter.png b/askbot/skins/old/media/images/openid/twitter.png
new file mode 100755
index 00000000..9a6552d1
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/twitter.png
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/verisign.ico b/askbot/skins/old/media/images/openid/verisign.ico
new file mode 100755
index 00000000..3953af93
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/verisign.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/vidoop.ico b/askbot/skins/old/media/images/openid/vidoop.ico
new file mode 100755
index 00000000..bbd9a0d5
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/vidoop.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/wordpress.ico b/askbot/skins/old/media/images/openid/wordpress.ico
new file mode 100755
index 00000000..31b7d2c2
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/wordpress.ico
Binary files differ
diff --git a/askbot/skins/old/media/images/openid/yahoo.gif b/askbot/skins/old/media/images/openid/yahoo.gif
new file mode 100755
index 00000000..0f0eb8ef
--- /dev/null
+++ b/askbot/skins/old/media/images/openid/yahoo.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/print.png b/askbot/skins/old/media/images/print.png
new file mode 100644
index 00000000..37bf88af
--- /dev/null
+++ b/askbot/skins/old/media/images/print.png
Binary files differ
diff --git a/askbot/skins/old/media/images/pw-login.gif b/askbot/skins/old/media/images/pw-login.gif
new file mode 100644
index 00000000..f88b1bcf
--- /dev/null
+++ b/askbot/skins/old/media/images/pw-login.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/quest-bg.gif b/askbot/skins/old/media/images/quest-bg.gif
new file mode 100755
index 00000000..b7540238
--- /dev/null
+++ b/askbot/skins/old/media/images/quest-bg.gif
Binary files differ
diff --git a/askbot/skins/old/media/images/sprite.png b/askbot/skins/old/media/images/sprite.png
new file mode 100644
index 00000000..1a0fbc78
--- /dev/null
+++ b/askbot/skins/old/media/images/sprite.png
Binary files differ
diff --git a/askbot/skins/old/media/images/tag-left.png b/askbot/skins/old/media/images/tag-left.png
new file mode 100644
index 00000000..5a9d8a0d
--- /dev/null
+++ b/askbot/skins/old/media/images/tag-left.png
Binary files differ
diff --git a/askbot/skins/old/media/images/tag-right.png b/askbot/skins/old/media/images/tag-right.png
new file mode 100644
index 00000000..871664c3
--- /dev/null
+++ b/askbot/skins/old/media/images/tag-right.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-accepted-on.png b/askbot/skins/old/media/images/vote-accepted-on.png
new file mode 100755
index 00000000..2026f3bc
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-accepted-on.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-accepted.png b/askbot/skins/old/media/images/vote-accepted.png
new file mode 100755
index 00000000..ecd18551
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-accepted.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-arrow-down-on.png b/askbot/skins/old/media/images/vote-arrow-down-on.png
new file mode 100755
index 00000000..048dbb44
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-arrow-down-on.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-arrow-down.png b/askbot/skins/old/media/images/vote-arrow-down.png
new file mode 100755
index 00000000..e4fdec0a
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-arrow-down.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-arrow-up-on.png b/askbot/skins/old/media/images/vote-arrow-up-on.png
new file mode 100755
index 00000000..56ad0c25
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-arrow-up-on.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-arrow-up.png b/askbot/skins/old/media/images/vote-arrow-up.png
new file mode 100755
index 00000000..6e9a51c7
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-arrow-up.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-favorite-off.png b/askbot/skins/old/media/images/vote-favorite-off.png
new file mode 100755
index 00000000..c1bef074
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-favorite-off.png
Binary files differ
diff --git a/askbot/skins/old/media/images/vote-favorite-on.png b/askbot/skins/old/media/images/vote-favorite-on.png
new file mode 100755
index 00000000..1f9c14ab
--- /dev/null
+++ b/askbot/skins/old/media/images/vote-favorite-on.png
Binary files differ
diff --git a/askbot/skins/old/media/images/wiki.png b/askbot/skins/old/media/images/wiki.png
new file mode 100644
index 00000000..06d487f3
--- /dev/null
+++ b/askbot/skins/old/media/images/wiki.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/aol.gif b/askbot/skins/old/media/jquery-openid/images/aol.gif
new file mode 100755
index 00000000..24d1e152
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/aol.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/blogger-1.png b/askbot/skins/old/media/jquery-openid/images/blogger-1.png
new file mode 100755
index 00000000..8b360ea5
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/blogger-1.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/blogger.ico b/askbot/skins/old/media/jquery-openid/images/blogger.ico
new file mode 100755
index 00000000..1b9730b0
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/blogger.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/claimid-0.png b/askbot/skins/old/media/jquery-openid/images/claimid-0.png
new file mode 100755
index 00000000..4a0ea1b3
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/claimid-0.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/claimid.ico b/askbot/skins/old/media/jquery-openid/images/claimid.ico
new file mode 100755
index 00000000..2b80f491
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/claimid.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/facebook.gif b/askbot/skins/old/media/jquery-openid/images/facebook.gif
new file mode 100755
index 00000000..c5586455
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/facebook.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/flickr.ico b/askbot/skins/old/media/jquery-openid/images/flickr.ico
new file mode 100755
index 00000000..11f6e07f
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/flickr.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/flickr.png b/askbot/skins/old/media/jquery-openid/images/flickr.png
new file mode 100755
index 00000000..142405a6
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/flickr.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/google.gif b/askbot/skins/old/media/jquery-openid/images/google.gif
new file mode 100755
index 00000000..65395365
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/google.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/identica.png b/askbot/skins/old/media/jquery-openid/images/identica.png
new file mode 100644
index 00000000..2b607db1
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/identica.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/linkedin.gif b/askbot/skins/old/media/jquery-openid/images/linkedin.gif
new file mode 100644
index 00000000..36e049ac
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/linkedin.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/livejournal-1.png b/askbot/skins/old/media/jquery-openid/images/livejournal-1.png
new file mode 100755
index 00000000..e6436081
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/livejournal-1.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/livejournal.ico b/askbot/skins/old/media/jquery-openid/images/livejournal.ico
new file mode 100755
index 00000000..f3d21ec5
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/livejournal.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/myopenid-2.png b/askbot/skins/old/media/jquery-openid/images/myopenid-2.png
new file mode 100755
index 00000000..f64fb8e8
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/myopenid-2.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/myopenid.ico b/askbot/skins/old/media/jquery-openid/images/myopenid.ico
new file mode 100755
index 00000000..ceb06e6a
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/myopenid.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/openid-inputicon.gif b/askbot/skins/old/media/jquery-openid/images/openid-inputicon.gif
new file mode 100755
index 00000000..cde836c8
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/openid-inputicon.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/openid.gif b/askbot/skins/old/media/jquery-openid/images/openid.gif
new file mode 100755
index 00000000..19eb7c6f
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/openid.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/openidico.png b/askbot/skins/old/media/jquery-openid/images/openidico.png
new file mode 100755
index 00000000..ab622669
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/openidico.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/openidico16.png b/askbot/skins/old/media/jquery-openid/images/openidico16.png
new file mode 100755
index 00000000..ad718ac5
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/openidico16.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/technorati-1.png b/askbot/skins/old/media/jquery-openid/images/technorati-1.png
new file mode 100755
index 00000000..f7195240
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/technorati-1.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/technorati.ico b/askbot/skins/old/media/jquery-openid/images/technorati.ico
new file mode 100755
index 00000000..fa1083c1
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/technorati.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/twitter.gif b/askbot/skins/old/media/jquery-openid/images/twitter.gif
new file mode 100644
index 00000000..173cace1
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/twitter.gif
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/verisign-2.png b/askbot/skins/old/media/jquery-openid/images/verisign-2.png
new file mode 100755
index 00000000..c1467008
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/verisign-2.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/verisign.ico b/askbot/skins/old/media/jquery-openid/images/verisign.ico
new file mode 100755
index 00000000..3953af93
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/verisign.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/vidoop.ico b/askbot/skins/old/media/jquery-openid/images/vidoop.ico
new file mode 100755
index 00000000..bbd9a0d5
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/vidoop.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/vidoop.png b/askbot/skins/old/media/jquery-openid/images/vidoop.png
new file mode 100755
index 00000000..032c9e98
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/vidoop.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/wordpress.ico b/askbot/skins/old/media/jquery-openid/images/wordpress.ico
new file mode 100755
index 00000000..31b7d2c2
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/wordpress.ico
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/wordpress.png b/askbot/skins/old/media/jquery-openid/images/wordpress.png
new file mode 100755
index 00000000..ee29f0cf
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/wordpress.png
Binary files differ
diff --git a/askbot/skins/old/media/jquery-openid/images/yahoo.gif b/askbot/skins/old/media/jquery-openid/images/yahoo.gif
new file mode 100755
index 00000000..614910a9
--- /dev/null
+++ b/askbot/skins/old/media/jquery-openid/images/yahoo.gif
Binary files differ
diff --git a/askbot/skins/default/media/jquery-openid/jquery.openid.js b/askbot/skins/old/media/jquery-openid/jquery.openid.js
index 7ba9adce..7ba9adce 100644
--- a/askbot/skins/default/media/jquery-openid/jquery.openid.js
+++ b/askbot/skins/old/media/jquery-openid/jquery.openid.js
diff --git a/askbot/skins/default/media/jquery-openid/openid.css b/askbot/skins/old/media/jquery-openid/openid.css
index da541e45..da541e45 100644
--- a/askbot/skins/default/media/jquery-openid/openid.css
+++ b/askbot/skins/old/media/jquery-openid/openid.css
diff --git a/askbot/skins/old/media/js/autocompleter.js b/askbot/skins/old/media/js/autocompleter.js
new file mode 100644
index 00000000..a7c54315
--- /dev/null
+++ b/askbot/skins/old/media/js/autocompleter.js
@@ -0,0 +1,766 @@
+/**
+ * AutoCompleter Object, refactored closure style from
+ * jQuery autocomplete plugin
+ * @param {Object=} options Settings
+ * @constructor
+ */
+var AutoCompleter = function(options) {
+
+ /**
+ * Default options for autocomplete plugin
+ */
+ var defaults = {
+ autocompleteMultiple: true,
+ multipleSeparator: ' ',//a single character
+ 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, // TBD
+ onItemSelect: false,
+ autoFill: false,
+ filterResults: true,
+ sortResults: true,
+ sortFunction: false,
+ onNoMatch: false
+ };
+
+ /**
+ * Options dictionary
+ * @type Object
+ * @private
+ */
+ this.options = $.extend({}, defaults, options);
+
+ /**
+ * Cached data
+ * @type Object
+ * @private
+ */
+ this.cacheData_ = {};
+
+ /**
+ * Number of cached data items
+ * @type number
+ * @private
+ */
+ this.cacheLength_ = 0;
+
+ /**
+ * Class name to mark selected item
+ * @type string
+ * @private
+ */
+ this.selectClass_ = 'jquery-autocomplete-selected-item';
+
+ /**
+ * Handler to activation timeout
+ * @type ?number
+ * @private
+ */
+ this.keyTimeout_ = null;
+
+ /**
+ * Last key pressed in the input field (store for behavior)
+ * @type ?number
+ * @private
+ */
+ this.lastKeyPressed_ = null;
+
+ /**
+ * Last value processed by the autocompleter
+ * @type ?string
+ * @private
+ */
+ this.lastProcessedValue_ = null;
+
+ /**
+ * Last value selected by the user
+ * @type ?string
+ * @private
+ */
+ this.lastSelectedValue_ = null;
+
+ /**
+ * Is this autocompleter active?
+ * @type boolean
+ * @private
+ */
+ this.active_ = false;
+
+ /**
+ * Is it OK to finish on blur?
+ * @type boolean
+ * @private
+ */
+ 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(element){
+
+ /**
+ * Init DOM elements repository
+ */
+ this._element = element;
+
+ /**
+ * Switch off the native autocomplete
+ */
+ this._element.attr('autocomplete', 'off');
+
+ /**
+ * Create DOM element to hold results
+ */
+ 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(){
+ /**
+ * Shortcut to self
+ */
+ var self = this;
+
+ /**
+ * Attach keyboard monitoring to $elem
+ */
+ self._element.keydown(function(e) {
+ self.lastKeyPressed_ = e.keyCode;
+ switch(self.lastKeyPressed_) {
+
+ case 38: // up
+ e.preventDefault();
+ if (self.active_) {
+ self.focusPrev();
+ } else {
+ self.activate();
+ }
+ return false;
+ break;
+
+ case 40: // down
+ e.preventDefault();
+ if (self.active_) {
+ self.focusNext();
+ } else {
+ self.activate();
+ }
+ return false;
+ break;
+
+ case 9: // tab
+ case 13: // return
+ if (self.active_) {
+ e.preventDefault();
+ self.selectCurrent();
+ return false;
+ }
+ break;
+
+ case 27: // escape
+ if (self.active_) {
+ e.preventDefault();
+ self.finish();
+ return false;
+ }
+ break;
+
+ default:
+ self.activate();
+
+ }
+ });
+ self._element.blur(function() {
+ if (self.finishOnBlur_) {
+ setTimeout(function() { self.finish(); }, 200);
+ }
+ });
+};
+
+AutoCompleter.prototype.position = function() {
+ var offset = this._element.offset();
+ this._results.css({
+ top: offset.top + this._element.outerHeight(),
+ left: offset.left
+ });
+};
+
+AutoCompleter.prototype.cacheRead = function(filter) {
+ var filterLength, searchLength, search, maxPos, pos;
+ if (this.options.useCache) {
+ filter = String(filter);
+ filterLength = filter.length;
+ if (this.options.matchSubset) {
+ searchLength = 1;
+ } else {
+ searchLength = filterLength;
+ }
+ while (searchLength <= filterLength) {
+ if (this.options.matchInside) {
+ maxPos = filterLength - searchLength;
+ } else {
+ maxPos = 0;
+ }
+ pos = 0;
+ while (pos <= maxPos) {
+ search = filter.substr(0, searchLength);
+ if (this.cacheData_[search] !== undefined) {
+ return this.cacheData_[search];
+ }
+ pos++;
+ }
+ searchLength++;
+ }
+ }
+ return false;
+};
+
+AutoCompleter.prototype.cacheWrite = function(filter, data) {
+ if (this.options.useCache) {
+ if (this.cacheLength_ >= this.options.maxCacheLength) {
+ this.cacheFlush();
+ }
+ filter = String(filter);
+ if (this.cacheData_[filter] !== undefined) {
+ this.cacheLength_++;
+ }
+ return this.cacheData_[filter] = data;
+ }
+ return false;
+};
+
+AutoCompleter.prototype.cacheFlush = function() {
+ this.cacheData_ = {};
+ this.cacheLength_ = 0;
+};
+
+AutoCompleter.prototype.callHook = function(hook, data) {
+ var f = this.options[hook];
+ if (f && $.isFunction(f)) {
+ return f(data, this);
+ }
+ return false;
+};
+
+AutoCompleter.prototype.activate = function() {
+ var self = this;
+ var activateNow = function() {
+ self.activateNow();
+ };
+ var delay = parseInt(this.options.delay, 10);
+ if (isNaN(delay) || delay <= 0) {
+ delay = 250;
+ }
+ if (this.keyTimeout_) {
+ clearTimeout(this.keyTimeout_);
+ }
+ this.keyTimeout_ = setTimeout(activateNow, delay);
+};
+
+AutoCompleter.prototype.activateNow = function() {
+ var value = this.getValue();
+ if (value !== this.lastProcessedValue_ && value !== this.lastSelectedValue_) {
+ if (value.length >= this.options.minChars) {
+ this.active_ = true;
+ this.lastProcessedValue_ = value;
+ this.fetchData(value);
+ }
+ }
+};
+
+AutoCompleter.prototype.fetchData = function(value) {
+ if (this.options.data) {
+ this.filterAndShowResults(this.options.data, value);
+ } else {
+ var self = this;
+ this.fetchRemoteData(value, function(remoteData) {
+ self.filterAndShowResults(remoteData, value);
+ });
+ }
+};
+
+AutoCompleter.prototype.fetchRemoteData = function(filter, callback) {
+ var data = this.cacheRead(filter);
+ if (data) {
+ callback(data);
+ } else {
+ var self = this;
+ if (this._element){
+ this._element.addClass(this.options.loadingClass);
+ }
+ var ajaxCallback = function(data) {
+ var parsed = false;
+ if (data !== false) {
+ parsed = self.parseRemoteData(data);
+ self.options.data = parsed;//cache data forever - E.F.
+ self.cacheWrite(filter, parsed);
+ }
+ if (self._element){
+ self._element.removeClass(self.options.loadingClass);
+ }
+ callback(parsed);
+ };
+ $.ajax({
+ url: this.makeUrl(filter),
+ success: ajaxCallback,
+ error: function() {
+ ajaxCallback(false);
+ }
+ });
+ }
+};
+
+AutoCompleter.prototype.setOption = function(name, value){
+ this.options[name] = value;
+};
+
+AutoCompleter.prototype.setExtraParam = function(name, value) {
+ var index = $.trim(String(name));
+ if (index) {
+ if (!this.options.extraParams) {
+ this.options.extraParams = {};
+ }
+ if (this.options.extraParams[index] !== value) {
+ this.options.extraParams[index] = value;
+ this.cacheFlush();
+ }
+ }
+};
+
+AutoCompleter.prototype.makeUrl = function(param) {
+ var self = this;
+ var url = this.options.url;
+ var params = $.extend({}, this.options.extraParams);
+ // If options.queryParamName === false, append query to url
+ // instead of using a GET parameter
+ if (this.options.queryParamName === false) {
+ url += encodeURIComponent(param);
+ } else {
+ params[this.options.queryParamName] = param;
+ }
+
+ if (this.options.limitParamName && this.options.maxItemsToShow) {
+ params[this.options.limitParamName] = this.options.maxItemsToShow;
+ }
+
+ var urlAppend = [];
+ $.each(params, function(index, value) {
+ urlAppend.push(self.makeUrlParam(index, value));
+ });
+ if (urlAppend.length) {
+ url += url.indexOf('?') == -1 ? '?' : '&';
+ url += urlAppend.join('&');
+ }
+ return url;
+};
+
+AutoCompleter.prototype.makeUrlParam = function(name, value) {
+ return String(name) + '=' + encodeURIComponent(value);
+};
+
+/**
+ * Sanitize CR and LF, then split into lines
+ */
+AutoCompleter.prototype.splitText = function(text) {
+ return String(text).replace(/(\r\n|\r|\n)/g, '\n').split(this.options.lineSeparator);
+};
+
+AutoCompleter.prototype.parseRemoteData = function(remoteData) {
+ var value, lines, i, j, data;
+ var results = [];
+ var lines = this.splitText(remoteData);
+ for (i = 0; i < lines.length; i++) {
+ var line = lines[i].split(this.options.cellSeparator);
+ data = [];
+ for (j = 0; j < line.length; j++) {
+ data.push(unescape(line[j]));
+ }
+ value = data.shift();
+ results.push({ value: unescape(value), data: data });
+ }
+ return results;
+};
+
+AutoCompleter.prototype.filterAndShowResults = function(results, filter) {
+ this.showResults(this.filterResults(results, filter), filter);
+};
+
+AutoCompleter.prototype.filterResults = function(results, filter) {
+
+ var filtered = [];
+ var value, data, i, result, type, include;
+ var regex, pattern, testValue;
+
+ for (i = 0; i < results.length; i++) {
+ result = results[i];
+ type = typeof result;
+ if (type === 'string') {
+ value = result;
+ data = {};
+ } else if ($.isArray(result)) {
+ value = result[0];
+ data = result.slice(1);
+ } else if (type === 'object') {
+ value = result.value;
+ data = result.data;
+ }
+ value = String(value);
+ if (value > '') {
+ if (typeof data !== 'object') {
+ data = {};
+ }
+ if (this.options.filterResults) {
+ pattern = String(filter);
+ testValue = String(value);
+ if (!this.options.matchCase) {
+ pattern = pattern.toLowerCase();
+ testValue = testValue.toLowerCase();
+ }
+ include = testValue.indexOf(pattern);
+ if (this.options.matchInside) {
+ include = include > -1;
+ } else {
+ include = include === 0;
+ }
+ } else {
+ include = true;
+ }
+ if (include) {
+ filtered.push({ value: value, data: data });
+ }
+ }
+ }
+
+ if (this.options.sortResults) {
+ filtered = this.sortResults(filtered, filter);
+ }
+
+ if (this.options.maxItemsToShow > 0 && this.options.maxItemsToShow < filtered.length) {
+ filtered.length = this.options.maxItemsToShow;
+ }
+
+ return filtered;
+
+};
+
+AutoCompleter.prototype.sortResults = function(results, filter) {
+ var self = this;
+ var sortFunction = this.options.sortFunction;
+ if (!$.isFunction(sortFunction)) {
+ sortFunction = function(a, b, f) {
+ return self.sortValueAlpha(a, b, f);
+ };
+ }
+ results.sort(function(a, b) {
+ return sortFunction(a, b, filter);
+ });
+ return results;
+};
+
+AutoCompleter.prototype.sortValueAlpha = function(a, b, filter) {
+ a = String(a.value);
+ b = String(b.value);
+ if (!this.options.matchCase) {
+ a = a.toLowerCase();
+ b = b.toLowerCase();
+ }
+ if (a > b) {
+ return 1;
+ }
+ if (a < b) {
+ return -1;
+ }
+ return 0;
+};
+
+AutoCompleter.prototype.showResults = function(results, filter) {
+ var self = this;
+ var $ul = $('<ul></ul>');
+ var i, result, $li, extraWidth, first = false, $first = false;
+ var numResults = results.length;
+ for (i = 0; i < numResults; i++) {
+ result = results[i];
+ $li = $('<li>' + this.showResult(result.value, result.data) + '</li>');
+ $li.data('value', result.value);
+ $li.data('data', result.data);
+ $li.click(function() {
+ var $this = $(this);
+ self.selectItem($this);
+ }).mousedown(function() {
+ self.finishOnBlur_ = false;
+ }).mouseup(function() {
+ self.finishOnBlur_ = true;
+ });
+ $ul.append($li);
+ if (first === false) {
+ first = String(result.value);
+ $first = $li;
+ $li.addClass(this.options.firstItemClass);
+ }
+ if (i == numResults - 1) {
+ $li.addClass(this.options.lastItemClass);
+ }
+ }
+
+ // Alway recalculate position before showing since window size or
+ // input element location may have changed. This fixes #14
+ this.position();
+
+ this._results.html($ul).show();
+ extraWidth = this._results.outerWidth() - this._results.width();
+ this._results.width(this._element.outerWidth() - extraWidth);
+ $('li', this._results).hover(
+ function() { self.focusItem(this); },
+ function() { /* void */ }
+ );
+ if (this.autoFill(first, filter)) {
+ this.focusItem($first);
+ }
+};
+
+AutoCompleter.prototype.showResult = function(value, data) {
+ if ($.isFunction(this.options.showResult)) {
+ return this.options.showResult(value, data);
+ } else {
+ return value;
+ }
+};
+
+AutoCompleter.prototype.autoFill = function(value, filter) {
+ var lcValue, lcFilter, valueLength, filterLength;
+ if (this.options.autoFill && this.lastKeyPressed_ != 8) {
+ lcValue = String(value).toLowerCase();
+ lcFilter = String(filter).toLowerCase();
+ valueLength = value.length;
+ filterLength = filter.length;
+ if (lcValue.substr(0, filterLength) === lcFilter) {
+ this._element.val(value);
+ this.selectRange(filterLength, valueLength);
+ return true;
+ }
+ }
+ return false;
+};
+
+AutoCompleter.prototype.focusNext = function() {
+ this.focusMove(+1);
+};
+
+AutoCompleter.prototype.focusPrev = function() {
+ this.focusMove(-1);
+};
+
+AutoCompleter.prototype.focusMove = function(modifier) {
+ var i, $items = $('li', this._results);
+ modifier = parseInt(modifier, 10);
+ for (var i = 0; i < $items.length; i++) {
+ if ($($items[i]).hasClass(this.selectClass_)) {
+ this.focusItem(i + modifier);
+ return;
+ }
+ }
+ this.focusItem(0);
+};
+
+AutoCompleter.prototype.focusItem = function(item) {
+ var $item, $items = $('li', this._results);
+ if ($items.length) {
+ $items.removeClass(this.selectClass_).removeClass(this.options.selectClass);
+ if (typeof item === 'number') {
+ item = parseInt(item, 10);
+ if (item < 0) {
+ item = 0;
+ } else if (item >= $items.length) {
+ item = $items.length - 1;
+ }
+ $item = $($items[item]);
+ } else {
+ $item = $(item);
+ }
+ if ($item) {
+ $item.addClass(this.selectClass_).addClass(this.options.selectClass);
+ }
+ }
+};
+
+AutoCompleter.prototype.selectCurrent = function() {
+ var $item = $('li.' + this.selectClass_, this._results);
+ if ($item.length == 1) {
+ this.selectItem($item);
+ } else {
+ this.finish();
+ }
+};
+
+AutoCompleter.prototype.selectItem = function($li) {
+ var value = $li.data('value');
+ var data = $li.data('data');
+ var displayValue = this.displayValue(value, data);
+ this.lastProcessedValue_ = displayValue;
+ this.lastSelectedValue_ = displayValue;
+
+ this.setValue(displayValue);
+
+ this.setCaret(displayValue.length);
+ this.callHook('onItemSelect', { value: value, data: data });
+ this.finish();
+};
+
+/**
+ * @return {boolean} true if the symbol matches something that is
+ * considered content and false otherwise
+ * @param {string} symbol - a single char string
+ */
+AutoCompleter.prototype.isContentChar = function(symbol){
+ if (symbol.match(this.options['stopCharRegex'])){
+ return false;
+ } else if (symbol === this.options['multipleSeparator']){
+ return false;
+ } else {
+ return true;
+ }
+};
+
+/**
+ * takes value from the input box
+ * and saves _selection_start and _selection_end coordinates
+ * respects settings autocompleteMultiple and
+ * multipleSeparator
+ * @return {string} the current word in the
+ * autocompletable word
+ */
+AutoCompleter.prototype.getValue = function(){
+ var sel = this._element.getSelection();
+ var text = this._element.val();
+ var pos = sel.start;//estimated start
+ //find real start
+ var start = pos;
+ for (cpos = pos; cpos >= 0; cpos = cpos - 1){
+ if (cpos === text.length){
+ continue;
+ }
+ var symbol = text.charAt(cpos);
+ if (!this.isContentChar(symbol)){
+ break;
+ }
+ start = cpos;
+ }
+ //find real end
+ var end = pos;
+ for (cpos = pos; cpos < text.length; cpos = cpos + 1){
+ if (cpos === 0){
+ continue;
+ }
+ var symbol = text.charAt(cpos);
+ if (!this.isContentChar(symbol)){
+ break;
+ }
+ end = cpos;
+ }
+ this._selection_start = start;
+ this._selection_end = end;
+ return text.substring(start, end);
+}
+
+/**
+ * sets value of the input box
+ * by replacing the previous selection
+ * with the value from the autocompleter
+ */
+AutoCompleter.prototype.setValue = function(val){
+ var prefix = this._element.val().substring(0, this._selection_start);
+ var postfix = this._element.val().substring(this._selection_end + 1);
+ this._element.val(prefix + val + postfix);
+};
+
+AutoCompleter.prototype.displayValue = function(value, data) {
+ if ($.isFunction(this.options.displayValue)) {
+ return this.options.displayValue(value, data);
+ } else {
+ return value;
+ }
+};
+
+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(start, end) {
+ var input = this._element.get(0);
+ if (input.setSelectionRange) {
+ input.focus();
+ input.setSelectionRange(start, end);
+ } else if (this.createTextRange) {
+ var range = this.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', end);
+ range.moveStart('character', start);
+ range.select();
+ }
+};
+
+AutoCompleter.prototype.setCaret = function(pos) {
+ this.selectRange(pos, pos);
+};
+
diff --git a/askbot/skins/old/media/js/compress.bat b/askbot/skins/old/media/js/compress.bat
new file mode 100644
index 00000000..53d72588
--- /dev/null
+++ b/askbot/skins/old/media/js/compress.bat
@@ -0,0 +1,5 @@
+#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\wmd.js -o wmd\wmd-min.js
+#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\showdown.js -o wmd\showdown-min.js
+#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 post.js -o post.pack.js
+java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 se_hilite_src.js -o se_hilite.js
+pause
diff --git a/askbot/skins/old/media/js/editor.js b/askbot/skins/old/media/js/editor.js
new file mode 100644
index 00000000..f5b1e2af
--- /dev/null
+++ b/askbot/skins/old/media/js/editor.js
@@ -0,0 +1,75 @@
+/*
+ jQuery TextAreaResizer plugin
+ Created on 17th January 2008 by Ryan O'Dell
+ Version 1.0.4
+*/(function($){var textarea,staticOffset;var iLastMousePos=0;var iMin=32;var grip;$.fn.TextAreaResizer=function(){return this.each(function(){textarea=$(this).addClass('processed'),staticOffset=null;$(this).wrap('<div class="resizable-textarea"><span></span></div>').parent().append($('<div class="grippie"></div>').bind("mousedown",{el:this},startDrag));var grippie=$('div.grippie',$(this).parent())[0];grippie.style.marginRight=(grippie.offsetWidth-$(this)[0].offsetWidth)+'px'})};function startDrag(e){textarea=$(e.data.el);textarea.blur();iLastMousePos=mousePosition(e).y;staticOffset=textarea.height()-iLastMousePos;textarea.css('opacity',0.25);$(document).mousemove(performDrag).mouseup(endDrag);return false}function performDrag(e){var iThisMousePos=mousePosition(e).y;var iMousePos=staticOffset+iThisMousePos;if(iLastMousePos>=(iThisMousePos)){iMousePos-=5}iLastMousePos=iThisMousePos;iMousePos=Math.max(iMin,iMousePos);textarea.height(iMousePos+'px');if(iMousePos<iMin){endDrag(e)}return false}function endDrag(e){$(document).unbind('mousemove',performDrag).unbind('mouseup',endDrag);textarea.css('opacity',1);textarea.focus();textarea=null;staticOffset=null;iLastMousePos=0}function mousePosition(e){return{x:e.clientX+document.documentElement.scrollLeft,y:e.clientY+document.documentElement.scrollTop}}})(jQuery);
+/*
+ * TypeWatch 2.0 - Original by Denny Ferrassoli / Refactored by Charles Christolini
+ * Copyright(c) 2007 Denny Ferrassoli - DennyDotNet.com
+ * Coprright(c) 2008 Charles Christolini - BinaryPie.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+*/(function(jQuery){jQuery.fn.typeWatch=function(o){var options=jQuery.extend({wait:750,callback:function(){},highlight:true,captureLength:2},o);function checkElement(timer,override){var elTxt=jQuery(timer.el).val();if((elTxt.length>options.captureLength&&elTxt.toUpperCase()!=timer.text)||(override&&elTxt.length>options.captureLength)){timer.text=elTxt.toUpperCase();timer.cb(elTxt)}};function watchElement(elem){if(elem.type.toUpperCase()=="TEXT"||elem.nodeName.toUpperCase()=="TEXTAREA"){var timer={timer:null,text:jQuery(elem).val().toUpperCase(),cb:options.callback,el:elem,wait:options.wait};if(options.highlight){jQuery(elem).focus(function(){this.select()})}var startWatch=function(evt){var timerWait=timer.wait;var overrideBool=false;if(evt.keyCode==13&&this.type.toUpperCase()=="TEXT"){timerWait=1;overrideBool=true}var timerCallbackFx=function(){checkElement(timer,overrideBool)};clearTimeout(timer.timer);timer.timer=setTimeout(timerCallbackFx,timerWait)};jQuery(elem).keydown(startWatch)}};return this.each(function(index){watchElement(this)})}})(jQuery);
+/*
+Ajax upload
+*/jQuery.extend({createUploadIframe:function(d,b){var a="jUploadFrame"+d;if(window.ActiveXObject){var c=document.createElement('<iframe id="'+a+'" name="'+a+'" />');if(typeof b=="boolean"){c.src="javascript:false"}else{if(typeof b=="string"){c.src=b}}}else{var c=document.createElement("iframe");c.id=a;c.name=a}c.style.position="absolute";c.style.top="-1000px";c.style.left="-1000px";document.body.appendChild(c);return c},createUploadForm:function(g,b){var e="jUploadForm"+g;var a="jUploadFile"+g;var d=$('<form action="" method="POST" name="'+e+'" id="'+e+'" enctype="multipart/form-data"></form>');var c=$("#"+b);var f=$(c).clone();$(c).attr("id",a);$(c).before(f);$(c).appendTo(d);$(d).css("position","absolute");$(d).css("top","-1200px");$(d).css("left","-1200px");$(d).appendTo("body");return d},ajaxFileUpload:function(k){k=jQuery.extend({},jQuery.ajaxSettings,k);var a=new Date().getTime();var b=jQuery.createUploadForm(a,k.fileElementId);var i=jQuery.createUploadIframe(a,k.secureuri);var h="jUploadFrame"+a;var j="jUploadForm"+a;if(k.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}var c=false;var f={};if(k.global){jQuery.event.trigger("ajaxSend",[f,k])}var d=function(l){var p=document.getElementById(h);try{if(p.contentWindow){f.responseText=p.contentWindow.document.body?p.contentWindow.document.body.innerText:null;f.responseXML=p.contentWindow.document.XMLDocument?p.contentWindow.document.XMLDocument:p.contentWindow.document}else{if(p.contentDocument){f.responseText=p.contentDocument.document.body?p.contentDocument.document.body.textContent||document.body.innerText:null;f.responseXML=p.contentDocument.document.XMLDocument?p.contentDocument.document.XMLDocument:p.contentDocument.document}}}catch(o){jQuery.handleError(k,f,null,o)}if(f||l=="timeout"){c=true;var m;try{m=l!="timeout"?"success":"error";if(m!="error"){var n=jQuery.uploadHttpData(f,k.dataType);if(k.success){k.success(n,m)}if(k.global){jQuery.event.trigger("ajaxSuccess",[f,k])}}else{jQuery.handleError(k,f,m)}}catch(o){m="error";jQuery.handleError(k,f,m,o)}if(k.global){jQuery.event.trigger("ajaxComplete",[f,k])}if(k.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop")}if(k.complete){k.complete(f,m)}jQuery(p).unbind();setTimeout(function(){try{$(p).remove();$(b).remove()}catch(q){jQuery.handleError(k,f,null,q)}},100);f=null}};if(k.timeout>0){setTimeout(function(){if(!c){d("timeout")}},k.timeout)}try{var b=$("#"+j);$(b).attr("action",k.url);$(b).attr("method","POST");$(b).attr("target",h);if(b.encoding){b.encoding="multipart/form-data"}else{b.enctype="multipart/form-data"}$(b).submit()}catch(g){jQuery.handleError(k,f,null,g)}if(window.attachEvent){document.getElementById(h).attachEvent("onload",d)}else{document.getElementById(h).addEventListener("load",d,false)}return{abort:function(){}}},uploadHttpData:function(r,type){var data=!type;data=type=="xml"||data?r.responseXML:r.responseText;if(type=="script"){jQuery.globalEval(data)}if(type=="json"){eval("data = "+data)}if(type=="html"){jQuery("<div>").html(data).evalScripts()}return data}});
+/**
+ * Upload call. Used only once in the wmd file upload
+ * this is "tightly coupled" with the wmd file uploader
+ * @param {Object} jquery object imageUrl - where the
+ * uploaded url must be inserted on successful upload
+ * @param {Function} handler that is run upon change
+ * of the file upload field
+ */
+function ajaxFileUpload(imageUrl, startUploadHandler)
+{
+ $("#loading").ajaxStart(function(){
+ $(this).show();
+ }).ajaxComplete(function(){
+ $(this).hide();
+ });
+
+ $("#upload").ajaxStart(function(){
+ $(this).hide();
+ }).ajaxComplete(function(){
+ $(this).show();
+ });
+
+ $.ajaxFileUpload
+ (
+ {
+ url: askbot['urls']['upload'],
+ secureuri:false,
+ fileElementId:'file-upload',
+ dataType: 'xml',
+ success: function (data, status)
+ {
+ var fileURL = $(data).find('file_url').text();
+ var error = $(data).find('error').text();
+ if(error != ''){
+ alert(error);
+ if (startUploadHandler){
+ /* re-install this as the upload extension
+ * will remove the handler to prevent double uploading */
+ $('#file-upload').change(startUploadHandler);
+ }
+ }else{
+ imageUrl.attr('value', fileURL);
+ }
+
+ },
+ error: function (data, status, e)
+ {
+ alert(e);
+ if (startUploadHandler){
+ /* re-install this as the upload extension
+ * will remove the handler to prevent double uploading */
+ $('#file-upload').change(startUploadHandler);
+ }
+ }
+ }
+ )
+
+ return false;
+}
diff --git a/askbot/skins/old/media/js/excanvas.min.js b/askbot/skins/old/media/js/excanvas.min.js
new file mode 100644
index 00000000..12c74f7b
--- /dev/null
+++ b/askbot/skins/old/media/js/excanvas.min.js
@@ -0,0 +1 @@
+if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z<j.length;Z++){this.initElement(j[Z])}},initElement:function(i){if(!i.getContext){i.getContext=T;r(i.ownerDocument);i.innerHTML="";i.attachEvent("onpropertychange",S);i.attachEvent("onresize",w);var Z=i.attributes;if(Z.width&&Z.width.specified){i.style.width=Z.width.nodeValue+"px"}else{i.width=i.clientWidth}if(Z.height&&Z.height.specified){i.style.height=Z.height.nodeValue+"px"}else{i.height=i.clientHeight}}return i}};function S(i){var Z=i.srcElement;switch(i.propertyName){case"width":Z.getContext().clearRect();Z.style.width=Z.attributes.width.nodeValue+"px";Z.firstChild.style.width=Z.clientWidth+"px";break;case"height":Z.getContext().clearRect();Z.style.height=Z.attributes.height.nodeValue+"px";Z.firstChild.style.height=Z.clientHeight+"px";break}}function w(i){var Z=i.srcElement;if(Z.firstChild){Z.firstChild.style.width=Z.clientWidth+"px";Z.firstChild.style.height=Z.clientHeight+"px"}}E.init();var I=[];for(var AC=0;AC<16;AC++){for(var AB=0;AB<16;AB++){I[AC*16+AB]=AC.toString(16)+AB.toString(16)}}function V(){return[[1,0,0],[0,1,0],[0,0,1]]}function d(m,j){var i=V();for(var Z=0;Z<3;Z++){for(var AF=0;AF<3;AF++){var p=0;for(var AE=0;AE<3;AE++){p+=m[Z][AE]*j[AE][AF]}i[Z][AF]=p}}return i}function Q(i,Z){Z.fillStyle=i.fillStyle;Z.lineCap=i.lineCap;Z.lineJoin=i.lineJoin;Z.lineWidth=i.lineWidth;Z.miterLimit=i.miterLimit;Z.shadowBlur=i.shadowBlur;Z.shadowColor=i.shadowColor;Z.shadowOffsetX=i.shadowOffsetX;Z.shadowOffsetY=i.shadowOffsetY;Z.strokeStyle=i.strokeStyle;Z.globalAlpha=i.globalAlpha;Z.font=i.font;Z.textAlign=i.textAlign;Z.textBaseline=i.textBaseline;Z.arcScaleX_=i.arcScaleX_;Z.arcScaleY_=i.arcScaleY_;Z.lineScale_=i.lineScale_}var B={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function g(i){var m=i.indexOf("(",3);var Z=i.indexOf(")",m+1);var j=i.substring(m+1,Z).split(",");if(j.length==4&&i.substr(3,1)=="a"){alpha=Number(j[3])}else{j[3]=1}return j}function C(Z){return parseFloat(Z)/100}function N(i,j,Z){return Math.min(Z,Math.max(j,i))}function c(AF){var j,i,Z;h=parseFloat(AF[0])/360%360;if(h<0){h++}s=N(C(AF[1]),0,1);l=N(C(AF[2]),0,1);if(s==0){j=i=Z=l}else{var m=l<0.5?l*(1+s):l+s-l*s;var AE=2*l-m;j=A(AE,m,h+1/3);i=A(AE,m,h);Z=A(AE,m,h-1/3)}return"#"+I[Math.floor(j*255)]+I[Math.floor(i*255)]+I[Math.floor(Z*255)]}function A(i,Z,j){if(j<0){j++}if(j>1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" <g_vml_:group",' coordsize="',D*Z,",",D*AE,'"',' coordorigin="0,0"',' style="width:',Z,"px;height:",AE,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var p=[];p.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",K(AW.x/D),",","Dy=",K(AW.y/D),"");var AS=AW;var AR=this.getCoords_(AH+AJ,AF);var AP=this.getCoords_(AH,AF+AV);var AL=this.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright="',(AG-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AH<this.currentPath_.length;AH+=AE){var AK=[];var AF=false;AK.push("<g_vml_:shape",' filled="',!!AM,'"',' style="position:absolute;width:',m,"px;height:",AN,'px;"',' coordorigin="0,0"',' coordsize="',D*m,",",D*AN,'"',' stroked="',!AM,'"',' path="');var AO=false;for(var AI=AH;AI<Math.min(AH+AE,this.currentPath_.length);AI++){if(AI%AE==0&&AI>0){AK.push(" m ",K(this.currentPath_[AI-1].x),",",K(this.currentPath_[AI-1].y))}var Z=this.currentPath_[AI];var AJ;switch(Z.type){case"moveTo":AJ=Z;AK.push(" m ",K(Z.x),",",K(Z.y));break;case"lineTo":AK.push(" l ",K(Z.x),",",K(Z.y));break;case"close":AK.push(" x ");Z=null;break;case"bezierCurveTo":AK.push(" c ",K(Z.cp1x),",",K(Z.cp1y),",",K(Z.cp2x),",",K(Z.cp2y),",",K(Z.x),",",K(Z.y));break;case"at":case"wa":AK.push(" ",Z.type," ",K(Z.x-this.arcScaleX_*Z.radius),",",K(Z.y-this.arcScaleY_*Z.radius)," ",K(Z.x+this.arcScaleX_*Z.radius),",",K(Z.y+this.arcScaleY_*Z.radius)," ",K(Z.xStart),",",K(Z.yStart)," ",K(Z.xEnd),",",K(Z.yEnd));break}if(Z){if(AG.x==null||Z.x<AG.x){AG.x=Z.x}if(AL.x==null||Z.x>AL.x){AL.x=Z.x}if(AG.y==null||Z.y<AG.y){AG.y=Z.y}if(AL.y==null||Z.y>AL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("<g_vml_:stroke",' opacity="',p,'"',' joinstyle="',j.lineJoin,'"',' miterlimit="',j.miterLimit,'"',' endcap="',t(j.lineCap),'"',' weight="',Z,'px"',' color="',m,'" />')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae<AN;Ae++){var AM=AS[Ae];Ab.push(AM.offset*AK+AU+" "+AM.color)}AG.push('<g_vml_:fill type="',AH.type_,'"',' method="none" focus="100%"',' color="',AR,'"',' color2="',AQ,'"',' colors="',Ab.join(","),'"',' opacity="',AV,'"',' g_o_:opacity2="',AW,'"',' angle="',AL,'"',' focusposition="',Ac.x,",",Ac.y,'" />')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("<g_vml_:fill",' position="',AF/Z*AY*AY,",",AZ/m*AX*AX,'"',' type="tile"',' src="',AH.src_,'" />')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('<g_vml_:fill color="',AT,'" opacity="',Ad,'" />')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('<g_vml_:line from="',-i,' 0" to="',AP,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!AG,'" stroked="',!!AG,'" style="position:absolute;width:1px;height:1px;">');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('<g_vml_:skew on="t" matrix="',AL,'" ',' offset="',AJ,'" origin="',i,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',AD(AK),'" style="v-text-align:',p,";font:",AD(j),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; \ No newline at end of file
diff --git a/askbot/skins/old/media/js/flot-build.bat b/askbot/skins/old/media/js/flot-build.bat
new file mode 100644
index 00000000..f9f32cb7
--- /dev/null
+++ b/askbot/skins/old/media/js/flot-build.bat
@@ -0,0 +1,3 @@
+java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 jquery.flot.js -o jquery.flot.pack.js
+
+pause
diff --git a/askbot/skins/old/media/js/i18n.js b/askbot/skins/old/media/js/i18n.js
new file mode 100644
index 00000000..192d335b
--- /dev/null
+++ b/askbot/skins/old/media/js/i18n.js
@@ -0,0 +1,469 @@
+//var i18nLang;
+var i18nZh = {
+ 'insufficient privilege':'用户æƒé™ä¸åœ¨æ“作范围',
+ 'cannot pick own answer as best':'ä¸èƒ½è®¾ç½®è‡ªå·±çš„回答为最佳答案',
+ 'anonymous users cannot select favorite questions':'匿å用户ä¸èƒ½æ”¶è—问题,请先',
+ 'please login':'注册或者登录',
+ 'daily vote cap exhausted':'对ä¸èµ·ï¼Œæ‚¨å·²ç”¨å®Œä»Šæ—¥æ‰€æœ‰çš„投票。',
+ 'please confirm offensive':"确定è¦å½’类该帖为广告ã€äººèº«æ”»å‡»ã€æ¶æ„言论å—?",
+ 'anonymous users cannot flag offensive posts':'匿å用户ä¸èƒ½æ“作,请先',
+ 'cannot flag message as offensive twice':'ä¸èƒ½é‡å¤æ“作。',
+ 'flag offensive cap exhausted':'对ä¸èµ·ï¼Œæ‚¨å·²ç”¨å®Œä»Šæ—¥æ‰€æœ‰çš„5次‘水帖’æ“作。',
+ 'confirm delete':"确定è¦åˆ é™¤/撤销删除该帖å—?",
+ 'anonymous users cannot delete/undelete':"匿å用户ä¸èƒ½åˆ é™¤æˆ–撤销删除帖å­",
+ 'post recovered':"æ“作æˆåŠŸï¼è¯¥å¸–å­å·²è¢«æ¢å¤ã€‚",
+ 'post deleted':"æ“作æˆåŠŸï¼è¯¥å¸–å­å·²åˆ é™¤ã€‚",
+ 'add comment':'添加评论',
+ 'delete this comment':'删除此评论',
+ 'add a comment':"添加评论",
+ 'comments':"评论",
+ 'confirm delete comment':"真è¦åˆ é™¤æ­¤è¯„论å—?",
+ '{0} characters left': '还å¯å†™{0}字符',
+ 'click to close':'点击消æ¯æ¡†å…³é—­',
+ 'loading...':'读å–中...',
+ 'tags cannot be empty':'标签ä¸èƒ½ä¸ºç©ºã€‚',
+ 'content cannot be empty':'内容ä¸èƒ½ä¸ºç©ºã€‚',
+ 'content minchars': '请输入至少 {0} 字符。',
+ 'please enter title':'请输入标题。',
+ 'title minchars':"请输入至少 {0} 字符。",
+ 'delete':'删除',
+ 'undelete':'å–消',
+ 'bold':'粗体',
+ 'italic':'斜体',
+ 'link':'超链接',
+ 'quote':'引用',
+ 'preformatted text':'代ç ',
+ 'image':'图片',
+ 'numbered list':'æ•°å­—ç¼–å·åˆ—表',
+ 'bulleted list':'项目符å·åˆ—表',
+ 'heading':'标题',
+ 'horizontal bar':'水平线',
+ 'undo':'撤销',
+ 'redo':'é‡åš',
+ 'enter image url':'<b>输入图片地å€</b></p><p>示例:<br />http://www.example.com/image.jpg \"我的截图\"',
+ 'enter url':'<b>输入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的网站\"</p>"',
+ 'upload image':'或者上传本地图片:'
+};
+
+var i18nZhtw = {
+ 'insufficient privilege':'權é™ä¸è¶³',
+ 'cannot pick own answer as best':'ä¸èƒ½è”½æŽƒè‡ªç',
+ 'anonymous users cannot select favorite questions':'匿å用戶ä¸èƒ½æ”¶è—å•é¡Œ',
+ 'please login':'請先登錄',
+ 'daily vote cap exhausted':'å°ä¸èµ·ï¼Œæ‚¨å·²ç”¨å®Œä»Šæ—¥æ‰€æœ‰çš„投票。',
+ 'please confirm offensive':"確定è¦æ­¸é¡žè©²å¸–為廣告ã€äººèº«æ”»æ“Šã€æƒ¡æ„言論嗎?",
+ 'anonymous users cannot flag offensive posts':'匿å用戶ä¸èƒ½æ“作',
+ 'cannot flag message as offensive twice':'ä¸èƒ½é‡è¤‡æ“作。',
+ 'flag offensive cap exhausted':'å°ä¸èµ·ï¼Œæ‚¨å·²ç”¨å®Œä»Šæ—¥æ‰€æœ‰çš„5次『水帖ã€æ“作。',
+ 'confirm delete':"確定刪除",
+ 'anonymous users cannot delete/undelete':"匿å用戶ä¸èƒ½åˆªé™¤æˆ–æ¢å¾©å¸–å­",
+ 'post recovered':"æ“作æˆåŠŸï¼è©²å¸–å­å·²è¢«æ¢è¤‡ã€‚",
+ 'post deleted':"æ“作æˆåŠŸï¼è©²å¸–å­å·²åˆªé™¤ã€‚",
+ 'add comment':'添加評論',
+ 'delete this comment':'刪除此評論',
+ 'add a comment':"添加評論",
+ 'comments':"è©•è«–",
+ 'confirm delete comment':"刪除評論確èª",
+ '{0} characters left': 'é‚„å¯å¯«{0}å­—',
+ 'click to close':'點擊消æ¯æ¡†é—œé–‰',
+ 'loading...':'讀å–中...',
+ 'tags cannot be empty':'標籤ä¸èƒ½ç‚ºç©ºç™½',
+ 'content cannot be empty':'內容ä¸èƒ½ç‚ºç©ºç™½',
+ 'content minchars': '請輸入至少 {0} 字符。',
+ 'please enter title':'請輸入標題。',
+ 'title minchars':"請輸入至少 {0} 字符。",
+ 'delete':'刪除',
+ 'undelete':'å–消',
+ 'bold':'ç²—é«”',
+ 'italic':'斜體',
+ 'link':'超連接',
+ 'quote':'引用',
+ 'preformatted text':'代碼',
+ 'image':'圖片',
+ 'numbered list':'數字編號列表',
+ 'bulleted list':'項目符號列表',
+ 'heading':'標題',
+ 'horizontal bar':'水平線',
+ 'undo':'撤銷',
+ 'redo':'é‡åš',
+ 'enter image url':'<b>輸入圖片地å€</b></p><p>示例:<br />http://www.example.com/image.jpg \"我的截圖\"',
+ 'enter url':'<b>輸入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的網站\"</p>"',
+ 'upload image':'或者上傳本地圖片:'
+};
+
+
+var i18nEn = {
+ "anonymous users cannot vote": "sorry, anonymous users cannot vote ",
+ 'tags cannot be empty':'please enter at least one tag',
+ 'anonymous users cannot select favorite questions':'sorry, anonymous users cannot select favorite questions ',
+ 'upload image':'Upload image:',
+ 'enter image url':'enter URL of the image, e.g. http://www.example.com/image.jpg or upload an image file',
+ 'enter url':'enter Web address, e.g. http://www.example.com \"page title\"',
+ 'upload file attachment':'Please choose and upload a file:',
+ 'daily vote cap exhausted':'sorry, you\'ve used up todays vote cap',
+ 'cannot pick own answer as best':'sorry, you cannot accept your own answer',
+ 'please confirm offensive':'are you sure this post is offensive, contains spam, advertising, malicious remarks, etc.?',
+ 'flag offensive cap exhausted':'sorry, you\'ve used up todays cap of flagging offensive messages ',
+ 'confirm delete':'are you sure you want to delete this?',
+ 'anonymous users cannot delete/undelete':'sorry, anonymous users cannot delete or undelete posts',
+ 'post recovered':'your post is now restored!',
+ 'post deleted':'your post has been deleted',
+ 'confirm delete comment':'do you really want to delete this comment?',
+ 'content minchars': 'please enter more than {0} characters',
+ 'title minchars':"please enter at least {0} characters",
+ 'characters':'characters left',
+ 'cannot flag message as offensive twice':'cannot flag message as offensive twice ',
+ 'edit':'edit',
+ 'click to edit this comment':'click to edit this comment',
+ 'confirm abandon comment':'Are you sure you do not want to post this comment?',
+ 'save comment': 'save comment',
+ 'enter more characters': 'please enter at least {0} more characters',
+ 'Follow': 'Follow',
+ '<b>Following</b><b class="unfollow">Unfollow</b>': '<b>Following</b><b class="unfollow">Unfollow</b>',
+};
+
+var i18nFi = {
+ "anonymous users cannot vote": "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta ",
+ 'tags cannot be empty':'anna vähintään yksi tagi',
+ 'anonymous users cannot select favorite questions':'kirjaudu sisään, jotta voit käyttää tätä ominaisuutta',
+ 'upload image':'Lähetä kuva:',
+ 'enter image url':'Anna kuvan URL-osoite, esim. http://www.example.com/image.jpg \"kuvan otsikko\"',
+ 'enter url':'Anna URL-osoite, esim. http://www.example.com \"sivun otsikko\"',
+ 'daily vote cap exhausted':'olet käyttänyt tämän päivän osalta äänesi',
+ 'cannot pick own answer as best':'et voi hyväksyä omaa vastaustasi parhaaksi',
+ 'please confirm offensive':'oletko varma, että tämä on roskaposti, loukkaava tai muuta hyväksymätöntä?',
+ 'flag offensive cap exhausted':'olet käyttänyt tämän päivän merkkausmäärät ',
+ 'confirm delete':'oletko varma, että haluat poistaa tämän?',
+ 'anonymous users cannot delete/undelete':'kirjaudu sisään, jotta voit käyttää tätä ominaisuutta',
+ 'post recovered':'postauksesi on palautettu!',
+ 'post deleted':'postauksesi on poistettu',
+ 'confirm delete comment':'oletko varma, että haluat poistaa tämän kommentin?',
+ 'content minchars': 'syötä vähintään {0} merkkiä',
+ 'title minchars':"syötä vähintään {0} merkkiä",
+ '{0} characters left': '{0} merkkiä jäljellä',
+ 'cannot flag message as offensive twice':'ei voi merkata kahta kertaa '
+};
+
+var i18nTr = {
+ "anonymous users cannot vote":"üye girişi yapmadan oy kullanamazsınız",
+ 'insufficient privilege':'buna yetkiniz yoktur',
+ 'cannot pick own answer as best':'en cevap olarak kendi cevabınızı seçemezsiniz',
+ 'anonymous users cannot select favorite questions':'üye girişi yapmadan favori seçemezsiniz',
+ 'please login':'lütfen üye girişi yapınız',
+ 'daily vote cap exhausted':'bugünlük oy verme kotanız doldu',
+ 'please confirm offensive':"şikayetinizi onaylayın",
+ 'anonymous users cannot flag offensive posts':'üye girişi yapmadan şikayet gönderemezsiniz',
+ 'cannot flag message as offensive twice':'şikayet mesajı olarak iki kez işaretlemelisiniz',
+ 'flag offensive cap exhausted':'şikayet kotası aşıldı',
+ 'confirm delete':"Bunu silmek istediÄŸinizden emin misiniz?",
+ 'anonymous users cannot delete/undelete':"üye girişi yapmadan yazı silemez yada geri alamazsınız",
+ 'post recovered':"yazı geri alındı",
+ 'post deleted':"yazı silindi",
+ 'add comment':'yorum ekle',
+ 'delete this comment':'bu yorumu sil',
+ 'add a comment':"yorum ekle",
+ 'comments':"yorumlar",
+ 'confirm delete comment':"yorumu silmek istediÄŸinizden emin misiniz?",
+ '{0} characters left': 'yazılabilir {0} karakter eksik',
+ 'click to close':'kapatmak için tıklayın',
+ 'loading...':'yükleniyor...',
+ 'tags cannot be empty':'etiketler boÅŸ olamaz',
+ 'content cannot be empty':'içerik boş olamaz',
+ 'content minchars': 'Lütfen en az (0) karakter girin',
+ 'please enter title':'lütfen bir başlık yazın',
+ 'title minchars':"Lütfen en az (0) karakter girin",
+ 'delete':'sil',
+ 'undelete':'geri al',
+ 'bold': 'kalın',
+ 'italic':'italik',
+ 'link':'link',
+ 'quote':'alıntı',
+ 'preformatted text':'hazır metin',
+ 'image':'resimler',
+ 'numbered list':'numaralı liste',
+ 'bulleted list':'iÅŸaretli liste',
+ 'heading':'Başlık',
+ 'horizontal bar':'yatay bar',
+ 'undo':'geri',
+ 'redo':'yeniden',
+ 'enter image url':'örnek resmin URLsini girin: <br />http://www.example.com/image.jpg \"resim başlığı\"',
+ 'enter url':'web adresini girin: <br />http://www.cnprog.com/ \"başlık bağlantısı\"</p>"',
+ 'upload image':'resim yükle:'
+};
+
+var i18nEs = {
+ "anonymous users cannot vote":"usuarios anónimos no pueden votar",
+ 'insufficient privilege':'privilegio insuficiente',
+ 'cannot pick own answer as best':'no puede escoger su propia respuesta como la mejor',
+ 'anonymous users cannot select favorite questions':'usuarios anonimos no pueden seleccionar',
+ 'please login':'por favor inicie sesión',
+ 'daily vote cap exhausted':'cuota de votos diarios excedida',
+ 'please confirm offensive':"por favor confirme ofensiva",
+ 'anonymous users cannot flag offensive posts':'usuarios anónimos no pueden marcar publicaciones como ofensivas',
+ 'cannot flag message as offensive twice':'no puede marcar mensaje como ofensivo dos veces',
+ 'flag offensive cap exhausted':'cuota para marcar ofensivas ha sido excedida',
+ 'confirm delete':"¿Está seguro que desea borrar esto?",
+ 'anonymous users cannot delete/undelete':"usuarios anónimos no pueden borrar o recuperar publicaciones",
+ 'post recovered':"publicación recuperada",
+ 'post deleted':"publicación borrada。",
+ 'add comment':'agregar comentario',
+ 'delete this comment':'borrar este comentario',
+ 'add a comment':"agregar comentarios",
+ 'comments':"comentarios",
+ 'confirm delete comment':"¿Realmente desea borrar este comentario?",
+ '{0} characters left': '{0} caracteres faltantes',
+ 'click to close':'haga click para cerrar',
+ 'loading...':'cargando...',
+ 'tags cannot be empty':'las etiquetas no pueden estar vacías',
+ 'content cannot be empty':'el contenido no puede estar vacío',
+ 'content minchars': 'por favor introduzca mas de {0} caracteres',
+ 'please enter title':'por favor ingrese un título',
+ 'title minchars':"por favor introduzca al menos {0} caracteres",
+ 'delete':'borrar',
+ 'undelete': 'recuperar',
+ 'bold': 'negrita',
+ 'italic':'cursiva',
+ 'link':'enlace',
+ 'quote':'citar',
+ 'preformatted text':'texto preformateado',
+ 'image':'imagen',
+ 'numbered list':'lista numerada',
+ 'bulleted list':'lista no numerada',
+ 'heading':'标题',
+ 'horizontal bar':'barra horizontal',
+ 'undo':'deshacer',
+ 'redo':'rehacer',
+ 'enter image url':'introduzca la URL de la imagen, por ejemplo:<br />http://www.example.com/image.jpg \"titulo de imagen\"',
+ 'enter url':'introduzca direcciones web, ejemplo:<br />http://www.cnprog.com/ \"titulo del enlace\"</p>"',
+ 'upload image':'cargar imagen:'
+};
+
+var i18nDe = {
+ "anonymous users cannot vote":"Gastbenutzer können nicht abstimmen ",
+ 'add a comment': 'Kommentar hinzufügen',
+ 'add comment': 'OK',
+ 'anonymous users cannot delete/undelete': 'Gastbenutzer können Beiträge nicht löschen oder wiederherstellen',
+ 'anonymous users cannot flag offensive posts': 'Gastbenutzer können Beiträge nicht melden',
+ 'anonymous users cannot select favorite questions': 'Gastbenutzer können keine Fragen als Favoriten markieren',
+ 'bold': 'Fett',
+ 'bulleted list': 'Liste',
+ '{0} characters left': '{0} characters left',
+ 'cannot flag message as offensive twice': 'Beiträge können nicht doppelt gemeldet werden',
+ 'cannot pick own answer as best': 'Eigene Antworten können nicht als die korrekte akzeptiert werden',
+ 'click to close': 'Schließen mit Klick',
+ 'comments': 'Kommentare',
+ 'confirm delete': 'Löschen bestätigen',
+ 'confirm delete comment': 'Löschen des Kommentars bestätigen',
+ 'content cannot be empty': 'Inhalt darf nicht leer sein',
+ 'content minchars': 'Bitte mindestens {0} Zeichen eingeben',
+ 'daily vote cap exhausted': 'Tägliches Abstimmungslimit erreicht',
+ 'delete': 'löschen',
+ 'delete this comment': 'Diesen Kommentar löschen',
+ 'enter image url': 'Bild-URL eingeben, zum Beispiel <br />http://www.ihredomain.de/bildname.jpg',
+ 'enter url': 'URL eingeben, zum Beispiel <br />http://www.askbot.org/ </p>',
+ 'flag offensive cap exhausted': 'Tägliches Limit zum Melden von Beiträgen erreicht',
+ 'heading': 'Titel',
+ 'horizontal bar': 'horizontaler Balken',
+ 'image': 'Bild',
+ 'insufficient privilege': 'nicht genügend Rechte',
+ 'italic': 'Kursiv',
+ 'link': 'Link',
+ 'loading...': 'Lade...',
+ 'numbered list': 'Nummerierte Liste',
+ 'please confirm offensive': 'Bitte beleidigenden/regelwidrigen Beitrag bestätigen',
+ 'please enter title': 'Bitte Titel eingeben',
+ 'please login': 'Bitte einloggen',
+ 'post deleted': 'Beitrag gelöscht',
+ 'post recovered': 'Beitrag wiederhergestellt',
+ 'preformatted text': 'Vorformatierter Text',
+ 'quote': 'Zitat',
+ 'redo': 'Wiederholen',
+ 'tags cannot be empty': 'Tags dürfen nicht leer sein',
+ 'title minchars': 'Bitte mindestens {0} Zeichen eingeben',
+ 'undelete': 'wiederherstellen',
+ 'undo': 'Rückgängig',
+ 'upload image': 'Bild hochladen'
+};
+
+
+var i18nRu = {
+ "anonymous users cannot vote": "Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы голоÑовать, ",
+ 'add a comment': 'добавить комментарий',
+ 'add comment': 'добавить комментарий',
+ 'save comment': 'Ñохранить комментарий',
+ 'anonymous users cannot delete/undelete': 'неавторизированные пользователи не могут воÑÑтанавливать и удалÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ',
+ 'anonymous users cannot flag offensive posts': 'Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы пожаловатьÑÑ Ð½Ð° Ñообщение, ',
+ 'anonymous users cannot select favorite questions': 'Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы добавть Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð² закладки, ',
+ 'Are you sure you want to remove your {provider} login?': 'Ð’Ñ‹ дейÑтвительно хотите удалить логин через {provider}?',
+ 'bold': 'жирный',
+ 'bulleted list': 'маркированный ÑпиÑок',
+ 'cancel': 'cancel',
+ '{0} characters left': 'оÑталоÑÑŒ меÑто Ð´Ð»Ñ {0} Ñимволов',
+ 'cannot flag message as offensive twice': 'Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÑ‚Ð¸Ñ‚ÑŒ Ñообщение как Ñпам два раза',
+ 'cannot pick own answer as best': 'Извините, выбрать ÑобÑтвенный ответ в качеÑтве лучшего не разрешаетÑÑ',
+ 'Change password': 'Изменить пароль',
+ 'Change your {provider} password': 'Измените Ваш пароль Ð´Ð»Ñ {provider}',
+ 'click to close': 'нажмите, что бы закрыть',
+ 'Create a password for {provider}': 'Создать пароль Ð´Ð»Ñ {provider}',
+ 'Create password': 'Создать пароль',
+ 'Create a password-protected account': 'Создать аккаунт, защищенный паролем',
+ 'comments': 'комментарии',
+ 'confirm abandon comment': '',
+ 'Connect your {provider_name} account to {site}': 'Соедините {site} Ñ Ð’Ð°ÑˆÐ¸Ð¼ аккаунтом от {provider_name}',
+ 'confirm delete': 'Удалить?',
+ 'confirm delete comment': 'Удалить комментарий?',
+ 'content cannot be empty': 'пожалуйÑта, добавьте Ñодержание',
+ 'content minchars': 'Ñодержание должно быть более {0} Ñимволов',
+ 'daily vote cap exhausted': 'иÑчерпан доÑтупный на ÑÐµÐ³Ð¾Ð´Ð½Ñ Ð»Ð¸Ð¼Ð¸Ñ‚ голоÑований',
+ 'delete': 'удалить',
+ 'save tags': 'запомнить теги',
+ 'delete this comment': 'удалить Ñтот комментарий',
+ 'Delete this notification?': 'Удалить Ñто извещение?',
+ 'Delete these notifications?': 'Удалить Ñти извещениÑ?',
+ 'enter image url': 'введите url изображениÑ, например:<br /> http://www.domain.ru/kartinka.gif',
+ 'enter url': 'введите url, например:<br />http://www.domain.ru/ </p>',
+ 'flag offensive cap exhausted': 'иÑчерпан доÑтупный на ÑÐµÐ³Ð¾Ð´Ð½Ñ Ð»Ð¸Ð¼Ð¸Ñ‚ Ñообщений о Ñпаме',
+ 'file name': 'название файла',
+ 'heading': 'заголовок',
+ 'horizontal bar': 'Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñа',
+ 'image': 'изображение',
+ 'image description': 'опиÑание изображениÑ',
+ 'insufficient privilege': 'недоÑтаточно прав',
+ 'italic': 'курÑив',
+ 'link': 'ÑÑылка',
+ 'link text': 'текÑÑ‚ ÑÑылки',
+ 'loading...': 'загрузка...',
+ 'passwords do not match': 'пароли не Ñовпадают',
+ 'numbered list': 'пронумерованный ÑпиÑок',
+ 'Please add one or more login methods.': 'ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸.',
+ 'please confirm offensive': 'Ð’Ñ‹ уверены что Ñто Ñообщение неумеÑтно?',
+ 'please enter title': 'пожалуйÑта, введите заголовок',
+ 'Please enter your {token_name}, then proceed': 'Чтобы продолжить, пожалуйÑта введите {token_name}',
+ 'Please select at least one item': 'ПожалуйÑта, отметьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно извещение',
+ 'enter more characters': 'недоÑтаточно Ñимволов, пожалуйÑта, добавьте ещё {0}',
+ 'please login': 'введите логин',
+ 'post deleted': 'Ñообщение удалено',
+ 'post recovered': 'воÑÑтановить Ñообщение',
+ 'preformatted text': 'форматирование текÑта',
+ 'quote': 'цитата',
+ 'redo': 'повторить',
+ 'see questions tagged \'{tag}\'': 'Ñмотрите вопроÑÑ‹, помеченные \'{tag}\'',
+ 'Show/change current login methods': 'ПроÑмотреть, изменить ÑущеÑтвующие методы авторизации.',
+ 'tags cannot be empty': 'введите теги',
+ 'title minchars': 'заголовок должен быть более {0} Ñимволов',
+ 'undelete': 'воÑÑтановить',
+ 'click to edit this comment': 'нажмите здеÑÑŒ, чтобы отредактировать Ñтот комментарий',
+ 'edit': 'редактировать',
+ 'undo': 'отменить',
+ 'upload image': 'загрузить изображение',
+ 'upload file attachment': 'загрузить файл',
+ 'You don\'t have a method to log in right now, please add one or more by clicking any of the icons below.': 'У Ð’Ð°Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÑ‚ поÑтоÑнного метода авторизации, пожалуйÑта выберите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один, нажав на любую из предложеных ниже кнопок.'
+};
+
+var i18nFr = {
+ "anonymous users cannot vote":"les utilisateurs anonyment ne peuvent pas voter ",
+ 'add a comment': 'Ajouter un commentaire',
+ 'add comment': 'OK',
+ 'anonymous users cannot delete/undelete': 'Les utilisateurs anonymes ne peuvent pas supprimer/restaurer',
+ 'anonymous users cannot flag offensive posts': 'Les utilisateurs anonymes ne peuvent pas signaler les messages à contenu abusif',
+ 'anonymous users cannot select favorite questions': 'Les utilisateurs anonymes ne peuvent pas sélectionner leurs questions favorites',
+ 'bold': 'gras',
+ 'bulleted list': 'liste',
+ '{0} characters left': '{0} characters left',
+ 'cannot flag message as offensive twice': 'Vous ne pouvez pas signaler deux fois un message à contenu abusif',
+ 'cannot pick own answer as best': 'Vous ne pouvez pas désigner une de vos propres réponses comme étant la meilleure réponse',
+ 'click to close': 'cliquez pour fermer',
+ 'comments': 'commentaires',
+ 'confirm delete': 'Confirmer la suppression',
+ 'confirm delete comment': 'Confirmer la suppression du commentaire',
+ 'content cannot be empty': 'Le contenu ne doit pas être vide',
+ 'content minchars': 'Veuillez saisir au moins {0} caractères',
+ 'daily vote cap exhausted': 'Votre quota journalier de votes est atteint',
+ 'delete': 'supprimer',
+ 'delete this comment': 'supprimer ce commentaire',
+ 'enter image url': 'Veuillez saisir une URL menant à une image, par exemple <br />http://www.votre-domaine.com/nom-image.jpg',
+ 'enter url': 'Entrez une URL, par exemple <br />http://www.askbot.org/ </p>',
+ 'flag offensive cap exhausted': 'Votre quota journalier de signalements de contenus abusifs a été atteint',
+ 'heading': 'Titre',
+ 'horizontal bar': 'Barre horizontale',
+ 'image': 'Image',
+ 'insufficient privilege': 'Privilèges insuffisants',
+ 'italic': 'italique',
+ 'link': 'lien',
+ 'loading...': 'Chargement en cours...',
+ 'numbered list': 'liste numérotée',
+ 'please confirm offensive': 'Veuillez confirmer que le contenu est abusif',
+ 'please enter title': 'Veuillez saisir un titre',
+ 'please login': 'Veuillez vous authentifier',
+ 'post deleted': 'Message supprimé',
+ 'post recovered': 'Message restauré',
+ 'preformatted text': 'Texte préformaté',
+ 'quote': 'Citer',
+ 'redo': 'Rétablir',
+ 'tags cannot be empty': 'Les mots-clés ne doivent pas être vides',
+ 'title minchars': 'Veuillez saisir au moins {0} caractères',
+ 'undelete': 'Restaurer',
+ 'undo': 'Annuler',
+ 'upload image': 'Charger une image'
+};
+
+var i18nIt = {
+ "anonymous users cannot vote":"Gli utenti anonimi non possono votare ",
+ 'add a comment': 'Aggiungi un commento',
+ 'add comment': 'OK',
+ 'anonymous users cannot delete/undelete': 'Gli utenti anonimi non possono cancellare/annullare la cancellazione',
+ 'anonymous users cannot flag offensive posts': 'Gli utenti anonimi non possono flaggare come offensivo questo post',
+ 'anonymous users cannot select favorite questions': 'Gli utenti anonimi non possono aggiungere domande ai preferiti',
+ 'bold': 'grassetto',
+ 'bulleted list': 'Lista',
+ 'cannot flag message as offensive twice': 'non è possibile flaggare come offensivo più di una volta ',
+ 'cannot pick own answer as best': 'non è possibile assegnare come miglior risposta ad una propria domanda una propria risposta',
+ '{0} characters left': '{0} caratteri rimanenti',
+ 'click to close': 'clicca per chiudere',
+ 'comments': 'commenti',
+ 'confirm delete': 'conferma la cancellazione',
+ 'confirm delete comment': 'Vuoi davvero cancellare il commento?',
+ 'content cannot be empty': 'il contenuto non può essere vuoto',
+ 'content minchars': 'per favore inserisci più di {0} caratteri',
+ 'daily vote cap exhausted': 'Spiacente, hai raggiunto il limite odierno massimo di voti',
+ 'delete': 'elimina',
+ 'delete this comment': 'Elimina questo commento',
+ 'enter image url': 'inserisci l\'URL dell\'immagine, es. http://www.example.com/immagine.jpg \"titolo immagine\"',
+ 'enter url': 'inserisci l\'indirizzo web, e.g. <br />http://www.askbot.org/ </p>',
+ 'flag offensive cap exhausted': 'spiacente, hai raggiunto il limite odierno massimo di flag offensivi ',
+ 'heading': 'Titolo',
+ 'horizontal bar': 'barra orizzontale',
+ 'image': 'Immagine',
+ 'insufficient privilege': 'privilegi non sufficienti',
+ 'italic': 'corsivo',
+ 'link': 'Link',
+ 'loading...': 'Caricamento...',
+ 'numbered list': 'Lista numerata',
+ 'please confirm offensive': 'sei certo che questo post sia offensivo, contenga spam, pubblicità, osservazioni poco idonee, ecc.?',
+ 'please enter title': 'Per favore inserisci il titolo',
+ 'please login': 'Per favore effettua il login',
+ 'post deleted': 'Post eliminato',
+ 'post recovered': 'Post recuperato',
+ 'preformatted text': 'Testo preformattato',
+ 'quote': 'cita',
+ 'redo': 'Esegui nuovamente',
+ 'tags cannot be empty': 'Il campo Tags non può essere vuoto',
+ 'title minchars': 'per favore inserisci almeno {0} caratteri',
+ 'undelete': 'elimina',
+ 'undo': 'annulla',
+ 'upload image': 'carica immagine'
+};
+
+var i18n = {
+ 'en':i18nEn,
+ 'zh-cn':i18nZh,
+ 'es':i18nEs,
+ 'tr':i18nTr,
+ 'de':i18nDe,
+ 'ru':i18nRu,
+ 'fr':i18nFr,
+ 'it':i18nIt,
+ 'zh-tw':i18nZhtw
+};
+
+var i18n_dict = i18n[i18nLang];
diff --git a/askbot/skins/old/media/js/jquery-1.4.3.js b/askbot/skins/old/media/js/jquery-1.4.3.js
new file mode 100644
index 00000000..ad9a79c4
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery-1.4.3.js
@@ -0,0 +1,6883 @@
+/*!
+ * jQuery JavaScript Library v1.4.3
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 14 23:10:06 2010 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
+
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+ rwhite = /\s/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for non-word characters
+ rnonword = /\W/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $("TAG")
+ } else if ( !context && !rnonword.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return jQuery( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.4.3",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy, copyIsArray;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // A third-party is pushing the ready event forwards
+ if ( wait === true ) {
+ jQuery.readyWait--;
+ }
+
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn, i = 0;
+ while ( (fn = readyList[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Reset the list of functions
+ readyList = null;
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test(data.replace(rvalidescape, "@")
+ .replace(rvalidtokens, "]")
+ .replace(rvalidbraces, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type(array);
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length, j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// Verify that \s matches non-breaking spaces
+// (IE fails on this test)
+if ( !rwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return (window.jQuery = window.$ = jQuery);
+
+})();
+
+
+(function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + jQuery.now();
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0],
+ select = document.createElement("select"),
+ opt = select.appendChild( document.createElement("option") );
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Will be defined later
+ optDisabled: false,
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableHiddenOffsets: true
+ };
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as diabled)
+ select.disabled = true;
+ jQuery.support.optDisabled = !opt.disabled;
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";
+ var tds = div.getElementsByTagName("td");
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
+
+ tds[0].style.display = "";
+ tds[1].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
+ div.innerHTML = "";
+
+ document.body.removeChild( div ).style.display = "none";
+ div = tds = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ root = script = div = all = a = null;
+})();
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+
+
+
+
+var windowData = {},
+ rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + jQuery.now(),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ data: function( elem, name, data ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var isNode = elem.nodeType,
+ id = isNode ? elem[ jQuery.expando ] : null,
+ cache = jQuery.cache, thisCache;
+
+ if ( isNode && !id && typeof name === "string" && data === undefined ) {
+ return;
+ }
+
+ // Get the data from the object directly
+ if ( !isNode ) {
+ cache = elem;
+
+ // Compute a unique ID for the element
+ } else if ( !id ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ }
+
+ // Avoid generating a new cache unless none exists and we
+ // want to manipulate it.
+ if ( typeof name === "object" ) {
+ if ( isNode ) {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+
+ } else {
+ jQuery.extend( cache, name );
+ }
+
+ } else if ( isNode && !cache[ id ] ) {
+ cache[ id ] = {};
+ }
+
+ thisCache = isNode ? cache[ id ] : cache;
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined ) {
+ thisCache[ name ] = data;
+ }
+
+ return typeof name === "string" ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var isNode = elem.nodeType,
+ id = isNode ? elem[ jQuery.expando ] : elem,
+ cache = jQuery.cache,
+ thisCache = isNode ? cache[ id ] : id;
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( thisCache ) {
+ // Remove the section of cache data
+ delete thisCache[ name ];
+
+ // If we've removed all the data, remove the element's cache
+ if ( isNode && jQuery.isEmptyObject(thisCache) ) {
+ jQuery.removeData( elem );
+ }
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ if ( isNode && jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+
+ // Completely remove the data cache
+ } else if ( isNode ) {
+ delete cache[ id ];
+
+ // Remove all fields from the object
+ } else {
+ for ( var n in elem ) {
+ delete elem[ n ];
+ }
+ }
+ }
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ if ( typeof key === "undefined" ) {
+ return this.length ? jQuery.data( this[0] ) : null;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && this[0].nodeType === 1 ) {
+ data = this[0].getAttribute( "data-" + key );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ } else {
+ data = undefined;
+ }
+ }
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ), args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ), fn = queue.shift();
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i ) {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+
+
+
+
+var rclass = /[\n\t]/g,
+ rspaces = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /^(?:href|src|style)$/,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ", setClass = elem.className;
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value, isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className, i = 0, self = jQuery(this),
+ state = stateVal,
+ classNames = value.split( rspaces );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery.data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( !arguments.length ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray(val) ) {
+ val = jQuery.map(val, function (value) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't set attributes on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ if ( elem.nodeType === 1 ) {
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ // 'in' checks fail in Blackberry 4.7 #6931
+ if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ if ( value === null ) {
+ if ( elem.nodeType === 1 ) {
+ elem.removeAttribute( name );
+ }
+
+ } else {
+ elem[ name ] = value;
+ }
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ // Ensure that missing attributes return undefined
+ // Blackberry 4.7 returns "" from getAttribute #6938
+ if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
+ return undefined;
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+ }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspace = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ },
+ focusCounts = { focusin: 0, focusout: 0 };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery.data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ // Use a key less likely to result in collisions for plain JS objects.
+ // Fixes bug #7150.
+ var eventKey = elem.nodeType ? "events" : "__events__",
+ events = elemData[ eventKey ],
+ eventHandle = elemData.handle;
+
+ if ( typeof events === "function" ) {
+ // On plain objects events is a fn that holds the the data
+ // which prevents this data from being JSON serialized
+ // the function does not need to be called, it just contains the data
+ eventHandle = events.handle;
+ events = events.events;
+
+ } else if ( !events ) {
+ if ( !elem.nodeType ) {
+ // On plain objects, create a fn that acts as the holder
+ // of the values to avoid JSON serialization of event data
+ elemData[ eventKey ] = elemData = function(){};
+ }
+
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ eventKey = elem.nodeType ? "events" : "__events__",
+ elemData = jQuery.data( elem ),
+ events = elemData && elemData[ eventKey ];
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ if ( typeof events === "function" ) {
+ elemData = events;
+ events = events.events;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( typeof elemData === "function" ) {
+ jQuery.removeData( elem, eventKey );
+
+ } else if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ jQuery.each( jQuery.cache, function() {
+ if ( this.events && this.events[type] ) {
+ jQuery.event.trigger( event, data, this.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = elem.nodeType ?
+ jQuery.data( elem, "handle" ) :
+ (jQuery.data( elem, "__events__" ) || {}).handle;
+
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (inlineError) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var target = event.target, old, targetType = type.replace(rnamespaces, ""),
+ isClick = jQuery.nodeName(target, "a") && targetType === "click",
+ special = jQuery.event.special[ targetType ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+ try {
+ if ( target[ targetType ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + targetType ];
+
+ if ( old ) {
+ target[ "on" + targetType ] = null;
+ }
+
+ jQuery.event.triggered = true;
+ target[ targetType ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (triggerError) {}
+
+ if ( old ) {
+ target[ "on" + targetType ] = old;
+ }
+
+ jQuery.event.triggered = false;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace_sort = [], namespace_re, events, args = jQuery.makeArray( arguments );
+
+ event = args[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.namespace = event.namespace || namespace_sort.join(".");
+
+ events = jQuery.data(this, this.nodeType ? "events" : "__events__");
+
+ if ( typeof events === "function" ) {
+ events = events.events;
+ }
+
+ handlers = (events || {})[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
+ },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+ }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ e.liveFired = undefined;
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ e.liveFired = undefined;
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery.data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery.data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ return jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery.data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ args[0].type = type;
+ return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( focusCounts[fix]++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --focusCounts[fix] === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.trigger( e, null, e.target );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( type === "focus" || type === "blur" ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, elems = [], selectors = [],
+ related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ events = jQuery.data( this, this.nodeType ? "events" : "__events__" );
+
+ if ( typeof events === "function" ) {
+ events = events.events;
+ }
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+ if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+ return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {
+ elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspace, "&");
+}
+
+jQuery.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").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+ jQuery(window).bind("unload", function() {
+ for ( var id in jQuery.cache ) {
+ if ( jQuery.cache[ id ].handle ) {
+ // Try/Catch is to handle iframes being unloaded, see #4280
+ try {
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+ } catch(e) {}
+ }
+ }
+ });
+}
+
+
+/*!
+ * Sizzle CSS Selector Engine - v1.0
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function(){
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context),
+ soFar = selector, ret, cur, pop, i;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec("");
+ m = chunker.exec(soFar);
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+ set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function(results){
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function(expr, set){
+ return Sizzle(expr, null, null, set);
+};
+
+Sizzle.matchesSelector = function(node, expr){
+ return Sizzle(expr, null, null, [node]).length > 0;
+};
+
+Sizzle.find = function(expr, context, isXML){
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var type = Expr.order[i], match;
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+ var old = expr, result = [], curLoop = set, match, anyFound,
+ isXMLFilter = set && set[0] && Sizzle.isXML(set[0]);
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var filter = Expr.filter[ type ], found, item, left = match[1];
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.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|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+ leftMatch: {},
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem){
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test(part),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+ ">": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ elem, i = 0, l = checkSet.length;
+
+ if ( isPartStr && !/\W/.test(part) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+ "": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck, nodeCheck;
+
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck, nodeCheck;
+
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+ NAME: function(match, context){
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [], results = context.getElementsByName(match[1]);
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+ TAG: function(match, context){
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match){
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop){
+ return match[1].toLowerCase();
+ },
+ CHILD: function(match){
+ if ( match[1] === "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not){
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+ return false;
+ }
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match){
+ match.unshift( true );
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem){
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem){
+ return elem.disabled === true;
+ },
+ checked: function(elem){
+ return elem.checked === true;
+ },
+ selected: function(elem){
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem){
+ return !!elem.firstChild;
+ },
+ empty: function(elem){
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match){
+ return !!Sizzle( match[3], elem ).length;
+ },
+ header: function(elem){
+ return (/h\d/i).test( elem.nodeName );
+ },
+ text: function(elem){
+ return "text" === elem.type;
+ },
+ radio: function(elem){
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem){
+ return "checkbox" === elem.type;
+ },
+ file: function(elem){
+ return "file" === elem.type;
+ },
+ password: function(elem){
+ return "password" === elem.type;
+ },
+ submit: function(elem){
+ return "submit" === elem.type;
+ },
+ image: function(elem){
+ return "image" === elem.type;
+ },
+ reset: function(elem){
+ return "reset" === elem.type;
+ },
+ button: function(elem){
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+ },
+ input: function(elem){
+ return (/input|select|textarea|button/i).test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i){
+ return i === 0;
+ },
+ last: function(elem, i, match, array){
+ return i === array.length - 1;
+ },
+ even: function(elem, i){
+ return i % 2 === 0;
+ },
+ odd: function(elem, i){
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match){
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match){
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match){
+ return match[3] - 0 === i;
+ },
+ eq: function(elem, i, match){
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function(elem, match, i, array){
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+ } else {
+ Sizzle.error( "Syntax error, unrecognized expression: " + name );
+ }
+ },
+ CHILD: function(elem, match){
+ var type = match[1], node = elem;
+ switch (type) {
+ case 'only':
+ case 'first':
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ if ( type === "first" ) {
+ return true;
+ }
+ node = elem;
+ case 'last':
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ return true;
+ case 'nth':
+ var first = match[2], last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+ if ( first === 0 ) {
+ return diff === 0;
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+ ID: function(elem, match){
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+ TAG: function(elem, match){
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+ CLASS: function(elem, match){
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+ ATTR: function(elem, match){
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+ POS: function(elem, match, i, array){
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function(array, results) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch(e){
+ makeArray = function(array, results) {
+ var ret = results || [], i = 0;
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+} else {
+ sortOrder = function( a, b ) {
+ var ap = [], bp = [], aup = a.parentNode, bup = b.parentNode,
+ cur = aup, al, bl;
+
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += Sizzle.getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime();
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match){
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+ root = form = null; // release memory in IE
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function(match, context){
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+ Expr.attrHandle.href = function(elem){
+ return elem.getAttribute("href", 2);
+ };
+ }
+
+ div = null; // release memory in IE
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ if ( context.nodeType === 9 ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var old = context.id, id = context.id = "__sizzle__";
+
+ try {
+ return makeArray( context.querySelectorAll( "#" + id + " " + query ), extra );
+
+ } catch(pseudoError) {
+ } finally {
+ if ( old ) {
+ context.id = old;
+
+ } else {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ div = null; // release memory in IE
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, ":sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ if ( matches ) {
+ Sizzle.matchesSelector = function( node, expr ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) ) {
+ return matches.call( node, expr );
+ }
+ } catch(e) {}
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context, isXML) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ div = null; // release memory in IE
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+Sizzle.contains = document.documentElement.contains ? function(a, b){
+ return a !== b && (a.contains ? a.contains(b) : true);
+} : function(a, b){
+ return !!(a.compareDocumentPosition(b) & 16);
+};
+
+Sizzle.isXML = function(elem){
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function(selector, context){
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS;
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var ret = this.pushStack( "", "find", selector ), length = 0;
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( var n = length; n < ret.length; n++ ) {
+ for ( var r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.filter( selector, this ).length > 0;
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ if ( jQuery.isArray( selectors ) ) {
+ var match, matches = {}, selector, level = 1;
+
+ if ( cur && selectors.length ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[selector] ) {
+ matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[selector];
+
+ if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+ }
+
+ return ret;
+ }
+
+ var pos = POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique(ret) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context || this.context ) :
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, slice.call(arguments).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [], cur = elem[dir];
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
+ raction = /\=([^="'>\s]+\/)>/g,
+ wrapMap = {
+ 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, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ), contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function() {
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML, ownerDocument = this.ownerDocument;
+ if ( !html ) {
+ var div = ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(rinlinejQuery, "")
+ // Handle the case in IE 8 where action=/test/> self-closes a tag
+ .replace(raction, '="$1">')
+ .replace(rleadingWhitespace, "")], ownerDocument)[0];
+ } else {
+ return this.cloneNode(true);
+ }
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ cloneCopyEvent( this, ret );
+ cloneCopyEvent( this.find("*"), ret.find("*") );
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery(this);
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery(value).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling, parent = this.parentNode;
+
+ jQuery(this).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, value = args[0], scripts = [], fragment, parent;
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ i > 0 || results.cacheable || this.length > 1 ?
+ fragment.cloneNode(true) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent(orig, ret) {
+ var i = 0;
+
+ ret.each(function() {
+ if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+ return;
+ }
+
+ var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+ }
+ });
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults,
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+ // Only cache "small" (1/2 KB) strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults ) {
+ if ( cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+jQuery.extend({
+ clean: function( elems, context, fragment, scripts ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [];
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+
+ } else if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ rdashAlpha = /-([a-z])/ig,
+ rupper = /([A-Z])/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ // cache check for defaultView.getComputedStyle
+ getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
+
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "zIndex": true,
+ "fontWeight": true,
+ "opacity": true,
+ "zoom": true,
+ "lineHeight": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( typeof value === "number" && isNaN( value ) || value == null ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name, origName );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ },
+
+ camelCase: function( string ) {
+ return string.replace( rdashAlpha, fcamelCase );
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ val = getWH( elem, name, extra );
+
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ return val + "px";
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat(value);
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ?
+ (parseFloat(RegExp.$1) / 100) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style;
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = jQuery.isNaN(value) ?
+ "" :
+ "alpha(opacity=" + value * 100 + ")",
+ filter = style.filter || "";
+
+ style.filter = ralpha.test(filter) ?
+ filter.replace(ralpha, opacity) :
+ style.filter + ' ' + opacity;
+ }
+ };
+}
+
+if ( getComputedStyle ) {
+ curCSS = function( elem, newName, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+
+} else if ( document.documentElement.currentStyle ) {
+ curCSS = function( elem, name ) {
+ var left, rsLeft, ret = elem.currentStyle && elem.currentStyle[ name ], style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+ rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+
+ return ret;
+ };
+}
+
+function getWH( elem, name, extra ) {
+ var which = name === "width" ? cssWidth : cssHeight,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return val;
+ }
+
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
+
+ } else {
+ val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
+ }
+ });
+
+ return val;
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth, height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var jsc = jQuery.now(),
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ rnoContent = /^(?:GET|HEAD|DELETE)$/,
+ rbracket = /\[\]$/,
+ jsre = /\=\?(&|$)/,
+ rquery = /\?/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+ r20 = /%20/g,
+ rhash = /#.*$/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load;
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function( res, status ) {
+ // If successful, inject the HTML into all the matched elements
+ if ( status === "success" || status === "notmodified" ) {
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [res.responseText, status, res] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+
+ serializeArray: function() {
+ return this.map(function() {
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function() {
+ return this.name && !this.disabled &&
+ (this.checked || rselectTextarea.test(this.nodeName) ||
+ rinput.test(this.type));
+ })
+ .map(function( i, elem ) {
+ var val = jQuery(this).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function( val, i ) {
+ return { name: elem.name, value: val };
+ }) :
+ { name: elem.name, value: val };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+ jQuery.fn[o] = function( f ) {
+ return this.bind(o, f);
+ };
+});
+
+jQuery.extend({
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ traditional: false,
+ */
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr: function() {
+ return new window.XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ ajax: function( origSettings ) {
+ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
+ jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);
+
+ s.url = s.url.replace( rhash, "" );
+
+ // Use original (not extended) context object if it was provided
+ s.context = origSettings && origSettings.context != null ? origSettings.context : s;
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType === "jsonp" ) {
+ if ( type === "GET" ) {
+ if ( !jsre.test( s.url ) ) {
+ s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ }
+ } else if ( !s.data || !jsre.test(s.data) ) {
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ }
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+ jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data ) {
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ }
+
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ var customJsonp = window[ jsonp ];
+
+ window[ jsonp ] = function( tmp ) {
+ data = tmp;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
+
+ if ( jQuery.isFunction( customJsonp ) ) {
+ customJsonp( tmp );
+
+ } else {
+ // Garbage collect
+ window[ jsonp ] = undefined;
+
+ try {
+ delete window[ jsonp ];
+ } catch( jsonpError ) {}
+ }
+
+ if ( head ) {
+ head.removeChild( script );
+ }
+ };
+ }
+
+ if ( s.dataType === "script" && s.cache === null ) {
+ s.cache = false;
+ }
+
+ if ( s.cache === false && type === "GET" ) {
+ var ts = jQuery.now();
+
+ // try replacing _= if it is there
+ var ret = s.url.replace(rts, "$1_=" + ts);
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if ( s.data && type === "GET" ) {
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Matches an absolute URL, and saves the domain
+ var parts = rurl.exec( s.url ),
+ remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType === "script" && type === "GET" && remote ) {
+ var head = document.getElementsByTagName("head")[0] || document.documentElement;
+ var script = document.createElement("script");
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+ script.src = s.url;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function() {
+ if ( !done && (!this.readyState ||
+ this.readyState === "loaded" || this.readyState === "complete") ) {
+ done = true;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+ }
+ };
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ if ( !xhr ) {
+ return;
+ }
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ } else {
+ xhr.open(type, s.url, s.async);
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set content-type if data specified and content-body is valid for this type
+ if ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) {
+ xhr.setRequestHeader("Content-Type", s.contentType);
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[s.url] ) {
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
+
+ if ( jQuery.etag[s.url] ) {
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ }
+ }
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ // Only send the header if it's not a remote XHR
+ if ( !remote ) {
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*; q=0.01" :
+ s.accepts._default );
+ } catch( headerError ) {}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && jQuery.active-- === 1 ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxSend", [xhr, s] );
+ }
+
+ // Wait for a response to come back
+ var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+ // The request was aborted
+ if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+ // Opera doesn't call onreadystatechange before this point
+ // so we simulate the call
+ if ( !requestDone ) {
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ requestDone = true;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
+ }
+
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
+ requestDone = true;
+ xhr.onreadystatechange = jQuery.noop;
+
+ status = isTimeout === "timeout" ?
+ "timeout" :
+ !jQuery.httpSuccess( xhr ) ?
+ "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+ "notmodified" :
+ "success";
+
+ var errMsg;
+
+ if ( status === "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch( parserError ) {
+ status = "parsererror";
+ errMsg = parserError;
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status === "success" || status === "notmodified" ) {
+ // JSONP handles its own success callback
+ if ( !jsonp ) {
+ jQuery.handleSuccess( s, xhr, status, data );
+ }
+ } else {
+ jQuery.handleError( s, xhr, status, errMsg );
+ }
+
+ // Fire the complete handlers
+ if ( !jsonp ) {
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ if ( isTimeout === "timeout" ) {
+ xhr.abort();
+ }
+
+ // Stop memory leaks
+ if ( s.async ) {
+ xhr = null;
+ }
+ }
+ };
+
+ // Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ // xhr.abort in IE7 is not a native JS function
+ // and does not have a call property
+ if ( xhr && oldAbort.call ) {
+ oldAbort.call( xhr );
+ }
+
+ onreadystatechange( "abort" );
+ };
+ } catch( abortError ) {}
+
+ // Timeout checker
+ if ( s.async && s.timeout > 0 ) {
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone ) {
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send( noContent || s.data == null ? null : s.data );
+
+ } catch( sendError ) {
+ jQuery.handleError( s, xhr, null, sendError );
+
+ // Fire the complete handlers
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async ) {
+ onreadystatechange();
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [], add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction(value) ? value() : value;
+ s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray(a) || a.jquery ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[prefix], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join("&").replace(r20, "+");
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray(obj) && obj.length ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ if ( jQuery.isEmptyObject( obj ) ) {
+ add( prefix, "" );
+
+ // Serialize object item.
+ } else {
+ jQuery.each( obj, function( k, v ) {
+ buildParams( prefix + "[" + k + "]", v, traditional, add );
+ });
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) {
+ s.error.call( s.context, xhr, status, e );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxError", [xhr, s, e] );
+ }
+ },
+
+ handleSuccess: function( s, xhr, status, data ) {
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success ) {
+ s.success.call( s.context, data, status, xhr );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxSuccess", [xhr, s] );
+ }
+ },
+
+ handleComplete: function( s, xhr, status ) {
+ // Process result
+ if ( s.complete ) {
+ s.complete.call( s.context, xhr, status );
+ }
+
+ // The request was completed
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxComplete", [xhr, s] );
+ }
+
+ // Handle the global AJAX counter
+ if ( s.global && jQuery.active-- === 1 ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ },
+
+ triggerGlobal: function( s, type, args ) {
+ (s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);
+ },
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol === "file:" ||
+ xhr.status >= 200 && xhr.status < 300 ||
+ xhr.status === 304 || xhr.status === 1223;
+ } catch(e) {}
+
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ var lastModified = xhr.getResponseHeader("Last-Modified"),
+ etag = xhr.getResponseHeader("Etag");
+
+ if ( lastModified ) {
+ jQuery.lastModified[url] = lastModified;
+ }
+
+ if ( etag ) {
+ jQuery.etag[url] = etag;
+ }
+
+ return xhr.status === 304;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type") || "",
+ xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.nodeName === "parsererror" ) {
+ jQuery.error( "parsererror" );
+ }
+
+ // Allow a pre-filtering function to sanitize the response
+ // s is checked to keep backwards compatibility
+ if ( s && s.dataFilter ) {
+ data = s.dataFilter( data, type );
+ }
+
+ // The filter can actually parse the response
+ if ( typeof data === "string" ) {
+ // Get the JavaScript object, if JSON is used.
+ if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+ data = jQuery.parseJSON( data );
+
+ // If the type is "script", eval it in global context
+ } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
+ jQuery.globalEval( data );
+ }
+ }
+
+ return data;
+ }
+
+});
+
+/*
+ * Create the request object; Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+if ( window.ActiveXObject ) {
+ jQuery.ajaxSettings.xhr = function() {
+ if ( window.location.protocol !== "file:" ) {
+ try {
+ return new window.XMLHttpRequest();
+ } catch(xhrError) {}
+ }
+
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch(activeError) {}
+ };
+}
+
+// Does this browser support XHR requests?
+jQuery.support.ajax = !!jQuery.ajaxSettings.xhr();
+
+
+
+
+var elemdisplay = {},
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)(.*)$/,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery.data(this[i], "olddisplay") && this[i].style.display === "none" ) {
+ this[i].style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( this[i].style.display === "" && jQuery.css( this[i], "display" ) === "none" ) {
+ jQuery.data(this[i], "olddisplay", defaultDisplay(this[i].nodeName));
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" ) {
+ jQuery.data( this[i], "olddisplay", display );
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete );
+ }
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ // XXX ‘this’ does not always have a nodeName when running the
+ // test suite
+
+ var opt = jQuery.extend({}, optall), p,
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ var name = jQuery.camelCase( p );
+
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ p = name;
+ }
+
+ if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
+ return opt.complete.call(this);
+ }
+
+ if ( isElement && ( p === "height" || p === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ var display = defaultDisplay(this.nodeName);
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( jQuery.isArray( prop[p] ) ) {
+ // Create (if needed) and add to specialEasing
+ (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+ prop[p] = prop[p][0];
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function( name, val ) {
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+ } else {
+ var parts = rfxnum.exec(val),
+ start = e.cur(true) || 0;
+
+ if ( parts ) {
+ var end = parseFloat( parts[2] ),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( self, name, (end || 1) + unit);
+ start = ((end || 1) / e.cur(true)) * start;
+ jQuery.style( self, name, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ var timers = jQuery.timers;
+
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if ( opt.queue !== false ) {
+ jQuery(this).dequeue();
+ }
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig ) {
+ options.orig = {};
+ }
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var r = parseFloat( jQuery.css( this.elem, this.prop ) );
+ return r && r > -10000 ? r : 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ this.startTime = jQuery.now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this, fx = jQuery.fx;
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(fx.tick, fx.interval);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = jQuery.now(), done = true;
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ for ( var i in this.options.curAnim ) {
+ if ( this.options.curAnim[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+ var elem = this.elem, options = this.options;
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ } );
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide ) {
+ jQuery(this.elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show ) {
+ for ( var p in this.options.curAnim ) {
+ jQuery.style( this.elem, p, this.options.orig[p] );
+ }
+ }
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+ var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+ this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+function defaultDisplay( nodeName ) {
+ if ( !elemdisplay[ nodeName ] ) {
+ var elem = jQuery("<" + nodeName + ">").appendTo("body"),
+ display = elem.css("display");
+
+ elem.remove();
+
+ if ( display === "none" || display === "" ) {
+ display = "block";
+ }
+
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box || { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ),
+ scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ body = container = innerDiv = checkDiv = table = td = null;
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop, left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is absolute
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ }
+
+ curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0;
+ curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function(val) {
+ var elem = this[0], win;
+
+ if ( !elem ) {
+ return null;
+ }
+
+ if ( val !== undefined ) {
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery(win).scrollLeft(),
+ i ? val : jQuery(win).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ } else {
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function( margin ) {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ return jQuery.isWindow( elem ) ?
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+ elem.document.body[ "client" + name ] :
+
+ // Get document width or height
+ (elem.nodeType === 9) ? // is it a document
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ ) :
+
+ // Get or set width or height on the element
+ size === undefined ?
+ // Get width or height on the element
+ parseFloat( jQuery.css( elem, type ) ) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css( type, typeof size === "string" ? size : size + "px" );
+ };
+
+});
+
+
+})(window);
diff --git a/askbot/skins/old/media/js/jquery-fieldselection.js b/askbot/skins/old/media/js/jquery-fieldselection.js
new file mode 100644
index 00000000..47f25a98
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery-fieldselection.js
@@ -0,0 +1,83 @@
+/*
+ * jQuery plugin: fieldSelection - v0.1.0 - last change: 2006-12-16
+ * (c) 2006 Alex Brem <alex@0xab.cd> - http://blog.0xab.cd
+ */
+
+(function() {
+
+ var fieldSelection = {
+
+ getSelection: function() {
+
+ var e = this.jquery ? this[0] : this;
+
+ return (
+
+ /* mozilla / dom 3.0 */
+ ('selectionStart' in e && function() {
+ var l = e.selectionEnd - e.selectionStart;
+ return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };
+ }) ||
+
+ /* exploder */
+ (document.selection && function() {
+
+ e.focus();
+
+ var r = document.selection.createRange();
+ if (r == null) {
+ return { start: 0, end: e.value.length, length: 0 }
+ }
+
+ var re = e.createTextRange();
+ var rc = re.duplicate();
+ re.moveToBookmark(r.getBookmark());
+ rc.setEndPoint('EndToStart', re);
+
+ return { start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text };
+ }) ||
+
+ /* browser not supported */
+ function() {
+ return { start: 0, end: e.value.length, length: 0 };
+ }
+
+ )();
+
+ },
+
+ replaceSelection: function() {
+
+ var e = this.jquery ? this[0] : this;
+ var text = arguments[0] || '';
+
+ return (
+
+ /* mozilla / dom 3.0 */
+ ('selectionStart' in e && function() {
+ e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
+ return this;
+ }) ||
+
+ /* exploder */
+ (document.selection && function() {
+ e.focus();
+ document.selection.createRange().text = text;
+ return this;
+ }) ||
+
+ /* browser not supported */
+ function() {
+ e.value += text;
+ return this;
+ }
+
+ )();
+
+ }
+
+ };
+
+ jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });
+
+})();
diff --git a/askbot/skins/old/media/js/jquery-fieldselection.min.js b/askbot/skins/old/media/js/jquery-fieldselection.min.js
new file mode 100644
index 00000000..c2abde0b
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery-fieldselection.min.js
@@ -0,0 +1 @@
+(function(){var a={getSelection:function(){var b=this.jquery?this[0]:this;return(("selectionStart" in b&&function(){var c=b.selectionEnd-b.selectionStart;return{start:b.selectionStart,end:b.selectionEnd,length:c,text:b.value.substr(b.selectionStart,c)}})||(document.selection&&function(){b.focus();var d=document.selection.createRange();if(d==null){return{start:0,end:b.value.length,length:0}}var c=b.createTextRange();var e=c.duplicate();c.moveToBookmark(d.getBookmark());e.setEndPoint("EndToStart",c);return{start:e.text.length,end:e.text.length+d.text.length,length:d.text.length,text:d.text}})||function(){return{start:0,end:b.value.length,length:0}})()},replaceSelection:function(){var b=this.jquery?this[0]:this;var c=arguments[0]||"";return(("selectionStart" in b&&function(){b.value=b.value.substr(0,b.selectionStart)+c+b.value.substr(b.selectionEnd,b.value.length);return this})||(document.selection&&function(){b.focus();document.selection.createRange().text=c;return this})||function(){b.value+=c;return this})()}};jQuery.each(a,function(b){jQuery.fn[b]=this})})(); \ No newline at end of file
diff --git a/askbot/skins/old/media/js/jquery.ajaxfileupload.js b/askbot/skins/old/media/js/jquery.ajaxfileupload.js
new file mode 100644
index 00000000..75292776
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.ajaxfileupload.js
@@ -0,0 +1,195 @@
+jQuery.extend({
+ createUploadIframe: function(id, uri){
+ //create frame
+ var frameId = 'jUploadFrame' + id;
+ if(window.ActiveXObject) {
+ var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
+ if(typeof uri== 'boolean'){
+ io.src = 'javascript:false';
+ }
+ else if(typeof uri== 'string'){
+ io.src = uri;
+ }
+ }
+ else {
+ var io = document.createElement('iframe');
+ io.id = frameId;
+ io.name = frameId;
+ }
+ io.style.position = 'absolute';
+ io.style.top = '-1000px';
+ io.style.left = '-1000px';
+
+ document.body.appendChild(io);
+ return io;
+ },
+ createUploadForm: function(id, fileElementId)
+ {
+ //create form
+ var formId = 'jUploadForm' + id;
+ var fileId = 'jUploadFile' + id;
+ var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId
+ + '" enctype="multipart/form-data"></form>');
+ var oldElement = $('#' + fileElementId);
+ var newElement = $(oldElement).clone();
+ $(oldElement).attr('id', fileId);
+ $(oldElement).before(newElement);
+ $(oldElement).appendTo(form);
+ //set attributes
+ $(form).css('position', 'absolute');
+ $(form).css('top', '-1200px');
+ $(form).css('left', '-1200px');
+ $(form).appendTo('body');
+ return form;
+ },
+
+ ajaxFileUpload: function(s) {
+ // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
+ s = jQuery.extend({}, jQuery.ajaxSettings, s);
+ var id = new Date().getTime()
+ var form = jQuery.createUploadForm(id, s.fileElementId);
+ var io = jQuery.createUploadIframe(id, s.secureuri);
+ var frameId = 'jUploadFrame' + id;
+ var formId = 'jUploadForm' + id;
+ // Watch for a new set of requests
+ if ( s.global && ! jQuery.active++ )
+ {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+ var requestDone = false;
+ // Create the request object
+ var xml = {}
+ if ( s.global )
+ jQuery.event.trigger("ajaxSend", [xml, s]);
+ // Wait for a response to come back
+ var uploadCallback = function(isTimeout)
+ {
+ var io = document.getElementById(frameId);
+ try {
+ if(io.contentWindow){
+ xml.responseText = io.contentWindow.document.body ?
+ io.contentWindow.document.body.innerText : null;
+ xml.responseXML = io.contentWindow.document.XMLDocument ?
+ io.contentWindow.document.XMLDocument : io.contentWindow.document;
+
+ }
+ else if(io.contentDocument)
+ {
+ xml.responseText = io.contentDocument.document.body ?
+ io.contentDocument.document.body.textContent || document.body.innerText : null;
+ xml.responseXML = io.contentDocument.document.XMLDocument ?
+ io.contentDocument.document.XMLDocument : io.contentDocument.document;
+ }
+ }
+ catch(e)
+ {
+ jQuery.handleError(s, xml, null, e);
+ }
+ if ( xml || isTimeout == "timeout")
+ {
+ requestDone = true;
+ var status;
+ try {
+ status = isTimeout != "timeout" ? "success" : "error";
+ // Make sure that the request was successful or notmodified
+ if ( status != "error" )
+ {
+ // process the data (runs the xml through httpData regardless of callback)
+ var data = jQuery.uploadHttpData( xml, s.dataType );
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success )
+ s.success( data, status );
+
+ // Fire the global callback
+ if( s.global )
+ jQuery.event.trigger( "ajaxSuccess", [xml, s] );
+ } else
+ jQuery.handleError(s, xml, status);
+ } catch(e)
+ {
+ status = "error";
+ jQuery.handleError(s, xml, status, e);
+ }
+
+ // The request was completed
+ if( s.global )
+ jQuery.event.trigger( "ajaxComplete", [xml, s] );
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+
+ // Process result
+ if ( s.complete )
+ s.complete(xml, status);
+
+ jQuery(io).unbind();
+
+ setTimeout(function()
+ { try
+ {
+ $(io).remove();
+ $(form).remove();
+
+ } catch(e) {
+ jQuery.handleError(s, xml, null, e);
+ }
+ }, 100)
+ xml = null;
+ }
+ }
+ // Timeout checker
+ if ( s.timeout > 0 ) {
+ setTimeout(function(){
+ // Check to see if the request is still happening
+ if( !requestDone ) uploadCallback( "timeout" );
+ }, s.timeout);
+ }
+ try
+ {
+ // var io = $('#' + frameId);
+ var form = $('#' + formId);
+ $(form).attr('action', s.url);
+ $(form).attr('method', 'POST');
+ $(form).attr('target', frameId);
+ if(form.encoding)
+ {
+ form.encoding = 'multipart/form-data';
+ }
+ else
+ {
+ form.enctype = 'multipart/form-data';
+ }
+ $(form).submit();
+
+ } catch(e)
+ {
+ jQuery.handleError(s, xml, null, e);
+ }
+ if(window.attachEvent){
+ document.getElementById(frameId).attachEvent('onload', uploadCallback);
+ }
+ else{
+ document.getElementById(frameId).addEventListener('load', uploadCallback, false);
+ }
+ return {abort: function () {}};
+
+ },
+
+ uploadHttpData: function( r, type ) {
+ var data = !type;
+ data = type == "xml" || data ? r.responseXML : r.responseText;
+ // If the type is "script", eval it in global context
+ if ( type == "script" )
+ jQuery.globalEval( data );
+ // Get the JavaScript object, if JSON is used.
+ if ( type == "json" )
+ eval( "data = " + data );
+ // evaluate scripts within html
+ if ( type == "html" )
+ jQuery("<div>").html(data).evalScripts();
+ //alert($('param', data).each(function(){alert($(this).attr('value'));}));
+ return data;
+ }
+})
+
diff --git a/askbot/skins/old/media/js/jquery.flot.js b/askbot/skins/old/media/js/jquery.flot.js
new file mode 100644
index 00000000..6534a468
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.flot.js
@@ -0,0 +1,2119 @@
+/* Javascript plotting library for jQuery, v. 0.6.
+ *
+ * Released under the MIT license by IOLA, December 2007.
+ *
+ */
+
+// first an inline dependency, jquery.colorhelpers.js, we inline it here
+// for convenience
+
+/* Plugin for jQuery for working with colors.
+ *
+ * Version 1.0.
+ *
+ * Inspiration from jQuery color animation plugin by John Resig.
+ *
+ * Released under the MIT license by Ole Laursen, October 2009.
+ *
+ * Examples:
+ *
+ * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
+ * var c = $.color.extract($("#mydiv"), 'background-color');
+ * console.log(c.r, c.g, c.b, c.a);
+ * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
+ *
+ * Note that .scale() and .add() work in-place instead of returning
+ * new objects.
+ */
+(function(){jQuery.color={};jQuery.color.make=function(E,D,B,C){var F={};F.r=E||0;F.g=D||0;F.b=B||0;F.a=C!=null?C:1;F.add=function(I,H){for(var G=0;G<I.length;++G){F[I.charAt(G)]+=H}return F.normalize()};F.scale=function(I,H){for(var G=0;G<I.length;++G){F[I.charAt(G)]*=H}return F.normalize()};F.toString=function(){if(F.a>=1){return"rgb("+[F.r,F.g,F.b].join(",")+")"}else{return"rgba("+[F.r,F.g,F.b,F.a].join(",")+")"}};F.normalize=function(){function G(I,J,H){return J<I?I:(J>H?H:J)}F.r=G(0,parseInt(F.r),255);F.g=G(0,parseInt(F.g),255);F.b=G(0,parseInt(F.b),255);F.a=G(0,F.a,1);return F};F.clone=function(){return jQuery.color.make(F.r,F.b,F.g,F.a)};return F.normalize()};jQuery.color.extract=function(C,B){var D;do{D=C.css(B).toLowerCase();if(D!=""&&D!="transparent"){break}C=C.parent()}while(!jQuery.nodeName(C.get(0),"body"));if(D=="rgba(0, 0, 0, 0)"){D="transparent"}return jQuery.color.parse(D)};jQuery.color.parse=function(E){var D,B=jQuery.color.make;if(D=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10))}if(D=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10),parseFloat(D[4]))}if(D=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55)}if(D=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55,parseFloat(D[4]))}if(D=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(E)){return B(parseInt(D[1],16),parseInt(D[2],16),parseInt(D[3],16))}if(D=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(E)){return B(parseInt(D[1]+D[1],16),parseInt(D[2]+D[2],16),parseInt(D[3]+D[3],16))}var C=jQuery.trim(E).toLowerCase();if(C=="transparent"){return B(255,255,255,0)}else{D=A[C];return B(D[0],D[1],D[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})();
+
+// the actual Flot code
+(function($) {
+ function Plot(placeholder, data_, options_, plugins) {
+ // data is on the form:
+ // [ series1, series2 ... ]
+ // where series is either just the data as [ [x1, y1], [x2, y2], ... ]
+ // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... }
+
+ var series = [],
+ options = {
+ // the color theme used for graphs
+ colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"],
+ legend: {
+ show: true,
+ noColumns: 1, // number of colums in legend table
+ labelFormatter: null, // fn: string -> string
+ labelBoxBorderColor: "#ccc", // border color for the little label boxes
+ container: null, // container (as jQuery object) to put legend in, null means default on top of graph
+ position: "ne", // position of default legend container within plot
+ margin: 5, // distance from grid edge to default legend container within plot
+ backgroundColor: null, // null means auto-detect
+ backgroundOpacity: 0.85 // set to 0 to avoid background
+ },
+ xaxis: {
+ mode: null, // null or "time"
+ transform: null, // null or f: number -> number to transform axis
+ inverseTransform: null, // if transform is set, this should be the inverse function
+ min: null, // min. value to show, null means set automatically
+ max: null, // max. value to show, null means set automatically
+ autoscaleMargin: null, // margin in % to add if auto-setting min/max
+ ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks
+ tickFormatter: null, // fn: number -> string
+ labelWidth: null, // size of tick labels in pixels
+ labelHeight: null,
+
+ // mode specific options
+ tickDecimals: null, // no. of decimals, null means auto
+ tickSize: null, // number or [number, "unit"]
+ minTickSize: null, // number or [number, "unit"]
+ monthNames: null, // list of names of months
+ timeformat: null, // format string to use
+ twelveHourClock: false // 12 or 24 time in time mode
+ },
+ yaxis: {
+ autoscaleMargin: 0.02
+ },
+ x2axis: {
+ autoscaleMargin: null
+ },
+ y2axis: {
+ autoscaleMargin: 0.02
+ },
+ series: {
+ points: {
+ show: false,
+ radius: 3,
+ lineWidth: 2, // in pixels
+ fill: true,
+ fillColor: "#ffffff"
+ },
+ lines: {
+ // we don't put in show: false so we can see
+ // whether lines were actively disabled
+ lineWidth: 2, // in pixels
+ fill: false,
+ fillColor: null,
+ steps: false
+ },
+ bars: {
+ show: false,
+ lineWidth: 2, // in pixels
+ barWidth: 1, // in units of the x axis
+ fill: true,
+ fillColor: null,
+ align: "left", // or "center"
+ horizontal: false // when horizontal, left is now top
+ },
+ shadowSize: 3
+ },
+ grid: {
+ show: true,
+ aboveData: false,
+ color: "#545454", // primary color used for outline and labels
+ backgroundColor: null, // null for transparent, else color
+ tickColor: "rgba(0,0,0,0.15)", // color used for the ticks
+ labelMargin: 5, // in pixels
+ borderWidth: 2, // in pixels
+ borderColor: null, // set if different from the grid color
+ markings: null, // array of ranges or fn: axes -> array of ranges
+ markingsColor: "#f4f4f4",
+ markingsLineWidth: 2,
+ // interactive stuff
+ clickable: false,
+ hoverable: false,
+ autoHighlight: true, // highlight in case mouse is near
+ mouseActiveRadius: 10 // how far the mouse can be away to activate an item
+ },
+ hooks: {}
+ },
+ canvas = null, // the canvas for the plot itself
+ overlay = null, // canvas for interactive stuff on top of plot
+ eventHolder = null, // jQuery object that events should be bound to
+ ctx = null, octx = null,
+ axes = { xaxis: {}, yaxis: {}, x2axis: {}, y2axis: {} },
+ plotOffset = { left: 0, right: 0, top: 0, bottom: 0},
+ canvasWidth = 0, canvasHeight = 0,
+ plotWidth = 0, plotHeight = 0,
+ hooks = {
+ processOptions: [],
+ processRawData: [],
+ processDatapoints: [],
+ draw: [],
+ bindEvents: [],
+ drawOverlay: []
+ },
+ plot = this;
+
+ // public functions
+ plot.setData = setData;
+ plot.setupGrid = setupGrid;
+ plot.draw = draw;
+ plot.getPlaceholder = function() { return placeholder; };
+ plot.getCanvas = function() { return canvas; };
+ plot.getPlotOffset = function() { return plotOffset; };
+ plot.width = function () { return plotWidth; };
+ plot.height = function () { return plotHeight; };
+ plot.offset = function () {
+ var o = eventHolder.offset();
+ o.left += plotOffset.left;
+ o.top += plotOffset.top;
+ return o;
+ };
+ plot.getData = function() { return series; };
+ plot.getAxes = function() { return axes; };
+ plot.getOptions = function() { return options; };
+ plot.highlight = highlight;
+ plot.unhighlight = unhighlight;
+ plot.triggerRedrawOverlay = triggerRedrawOverlay;
+ plot.pointOffset = function(point) {
+ return { left: parseInt(axisSpecToRealAxis(point, "xaxis").p2c(+point.x) + plotOffset.left),
+ top: parseInt(axisSpecToRealAxis(point, "yaxis").p2c(+point.y) + plotOffset.top) };
+ };
+
+
+ // public attributes
+ plot.hooks = hooks;
+
+ // initialize
+ initPlugins(plot);
+ parseOptions(options_);
+ constructCanvas();
+ setData(data_);
+ setupGrid();
+ draw();
+ bindEvents();
+
+
+ function executeHooks(hook, args) {
+ args = [plot].concat(args);
+ for (var i = 0; i < hook.length; ++i)
+ hook[i].apply(this, args);
+ }
+
+ function initPlugins() {
+ for (var i = 0; i < plugins.length; ++i) {
+ var p = plugins[i];
+ p.init(plot);
+ if (p.options)
+ $.extend(true, options, p.options);
+ }
+ }
+
+ function parseOptions(opts) {
+ $.extend(true, options, opts);
+ if (options.grid.borderColor == null)
+ options.grid.borderColor = options.grid.color;
+ // backwards compatibility, to be removed in future
+ if (options.xaxis.noTicks && options.xaxis.ticks == null)
+ options.xaxis.ticks = options.xaxis.noTicks;
+ if (options.yaxis.noTicks && options.yaxis.ticks == null)
+ options.yaxis.ticks = options.yaxis.noTicks;
+ if (options.grid.coloredAreas)
+ options.grid.markings = options.grid.coloredAreas;
+ if (options.grid.coloredAreasColor)
+ options.grid.markingsColor = options.grid.coloredAreasColor;
+ if (options.lines)
+ $.extend(true, options.series.lines, options.lines);
+ if (options.points)
+ $.extend(true, options.series.points, options.points);
+ if (options.bars)
+ $.extend(true, options.series.bars, options.bars);
+ if (options.shadowSize)
+ options.series.shadowSize = options.shadowSize;
+
+ for (var n in hooks)
+ if (options.hooks[n] && options.hooks[n].length)
+ hooks[n] = hooks[n].concat(options.hooks[n]);
+
+ executeHooks(hooks.processOptions, [options]);
+ }
+
+ function setData(d) {
+ series = parseData(d);
+ fillInSeriesOptions();
+ processData();
+ }
+
+ function parseData(d) {
+ var res = [];
+ for (var i = 0; i < d.length; ++i) {
+ var s = $.extend(true, {}, options.series);
+
+ if (d[i].data) {
+ s.data = d[i].data; // move the data instead of deep-copy
+ delete d[i].data;
+
+ $.extend(true, s, d[i]);
+
+ d[i].data = s.data;
+ }
+ else
+ s.data = d[i];
+ res.push(s);
+ }
+
+ return res;
+ }
+
+ function axisSpecToRealAxis(obj, attr) {
+ var a = obj[attr];
+ if (!a || a == 1)
+ return axes[attr];
+ if (typeof a == "number")
+ return axes[attr.charAt(0) + a + attr.slice(1)];
+ return a; // assume it's OK
+ }
+
+ function fillInSeriesOptions() {
+ var i;
+
+ // collect what we already got of colors
+ var neededColors = series.length,
+ usedColors = [],
+ assignedColors = [];
+ for (i = 0; i < series.length; ++i) {
+ var sc = series[i].color;
+ if (sc != null) {
+ --neededColors;
+ if (typeof sc == "number")
+ assignedColors.push(sc);
+ else
+ usedColors.push($.color.parse(series[i].color));
+ }
+ }
+
+ // we might need to generate more colors if higher indices
+ // are assigned
+ for (i = 0; i < assignedColors.length; ++i) {
+ neededColors = Math.max(neededColors, assignedColors[i] + 1);
+ }
+
+ // produce colors as needed
+ var colors = [], variation = 0;
+ i = 0;
+ while (colors.length < neededColors) {
+ var c;
+ if (options.colors.length == i) // check degenerate case
+ c = $.color.make(100, 100, 100);
+ else
+ c = $.color.parse(options.colors[i]);
+
+ // vary color if needed
+ var sign = variation % 2 == 1 ? -1 : 1;
+ c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)
+
+ // FIXME: if we're getting to close to something else,
+ // we should probably skip this one
+ colors.push(c);
+
+ ++i;
+ if (i >= options.colors.length) {
+ i = 0;
+ ++variation;
+ }
+ }
+
+ // fill in the options
+ var colori = 0, s;
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+
+ // assign colors
+ if (s.color == null) {
+ s.color = colors[colori].toString();
+ ++colori;
+ }
+ else if (typeof s.color == "number")
+ s.color = colors[s.color].toString();
+
+ // turn on lines automatically in case nothing is set
+ if (s.lines.show == null) {
+ var v, show = true;
+ for (v in s)
+ if (s[v].show) {
+ show = false;
+ break;
+ }
+ if (show)
+ s.lines.show = true;
+ }
+
+ // setup axes
+ s.xaxis = axisSpecToRealAxis(s, "xaxis");
+ s.yaxis = axisSpecToRealAxis(s, "yaxis");
+ }
+ }
+
+ function processData() {
+ var topSentry = Number.POSITIVE_INFINITY,
+ bottomSentry = Number.NEGATIVE_INFINITY,
+ i, j, k, m, length,
+ s, points, ps, x, y, axis, val, f, p;
+
+ for (axis in axes) {
+ axes[axis].datamin = topSentry;
+ axes[axis].datamax = bottomSentry;
+ axes[axis].used = false;
+ }
+
+ function updateAxis(axis, min, max) {
+ if (min < axis.datamin)
+ axis.datamin = min;
+ if (max > axis.datamax)
+ axis.datamax = max;
+ }
+
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+ s.datapoints = { points: [] };
+
+ executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);
+ }
+
+ // first pass: clean and copy data
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+
+ var data = s.data, format = s.datapoints.format;
+
+ if (!format) {
+ format = [];
+ // find out how to copy
+ format.push({ x: true, number: true, required: true });
+ format.push({ y: true, number: true, required: true });
+
+ if (s.bars.show)
+ format.push({ y: true, number: true, required: false, defaultValue: 0 });
+
+ s.datapoints.format = format;
+ }
+
+ if (s.datapoints.pointsize != null)
+ continue; // already filled in
+
+ if (s.datapoints.pointsize == null)
+ s.datapoints.pointsize = format.length;
+
+ ps = s.datapoints.pointsize;
+ points = s.datapoints.points;
+
+ insertSteps = s.lines.show && s.lines.steps;
+ s.xaxis.used = s.yaxis.used = true;
+
+ for (j = k = 0; j < data.length; ++j, k += ps) {
+ p = data[j];
+
+ var nullify = p == null;
+ if (!nullify) {
+ for (m = 0; m < ps; ++m) {
+ val = p[m];
+ f = format[m];
+
+ if (f) {
+ if (f.number && val != null) {
+ val = +val; // convert to number
+ if (isNaN(val))
+ val = null;
+ }
+
+ if (val == null) {
+ if (f.required)
+ nullify = true;
+
+ if (f.defaultValue != null)
+ val = f.defaultValue;
+ }
+ }
+
+ points[k + m] = val;
+ }
+ }
+
+ if (nullify) {
+ for (m = 0; m < ps; ++m) {
+ val = points[k + m];
+ if (val != null) {
+ f = format[m];
+ // extract min/max info
+ if (f.x)
+ updateAxis(s.xaxis, val, val);
+ if (f.y)
+ updateAxis(s.yaxis, val, val);
+ }
+ points[k + m] = null;
+ }
+ }
+ else {
+ // a little bit of line specific stuff that
+ // perhaps shouldn't be here, but lacking
+ // better means...
+ if (insertSteps && k > 0
+ && points[k - ps] != null
+ && points[k - ps] != points[k]
+ && points[k - ps + 1] != points[k + 1]) {
+ // copy the point to make room for a middle point
+ for (m = 0; m < ps; ++m)
+ points[k + ps + m] = points[k + m];
+
+ // middle point has same y
+ points[k + 1] = points[k - ps + 1];
+
+ // we've added a point, better reflect that
+ k += ps;
+ }
+ }
+ }
+ }
+
+ // give the hooks a chance to run
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+
+ executeHooks(hooks.processDatapoints, [ s, s.datapoints]);
+ }
+
+ // second pass: find datamax/datamin for auto-scaling
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+ points = s.datapoints.points,
+ ps = s.datapoints.pointsize;
+
+ var xmin = topSentry, ymin = topSentry,
+ xmax = bottomSentry, ymax = bottomSentry;
+
+ for (j = 0; j < points.length; j += ps) {
+ if (points[j] == null)
+ continue;
+
+ for (m = 0; m < ps; ++m) {
+ val = points[j + m];
+ f = format[m];
+ if (!f)
+ continue;
+
+ if (f.x) {
+ if (val < xmin)
+ xmin = val;
+ if (val > xmax)
+ xmax = val;
+ }
+ if (f.y) {
+ if (val < ymin)
+ ymin = val;
+ if (val > ymax)
+ ymax = val;
+ }
+ }
+ }
+
+ if (s.bars.show) {
+ // make sure we got room for the bar on the dancing floor
+ var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2;
+ if (s.bars.horizontal) {
+ ymin += delta;
+ ymax += delta + s.bars.barWidth;
+ }
+ else {
+ xmin += delta;
+ xmax += delta + s.bars.barWidth;
+ }
+ }
+
+ updateAxis(s.xaxis, xmin, xmax);
+ updateAxis(s.yaxis, ymin, ymax);
+ }
+
+ for (axis in axes) {
+ if (axes[axis].datamin == topSentry)
+ axes[axis].datamin = null;
+ if (axes[axis].datamax == bottomSentry)
+ axes[axis].datamax = null;
+ }
+ }
+
+ function constructCanvas() {
+ function makeCanvas(width, height) {
+ var c = document.createElement('canvas');
+ c.width = width;
+ c.height = height;
+ if ($.browser.msie) // excanvas hack
+ c = window.G_vmlCanvasManager.initElement(c);
+ return c;
+ }
+
+ canvasWidth = placeholder.width();
+ canvasHeight = placeholder.height();
+ placeholder.html(""); // clear placeholder
+ if (placeholder.css("position") == 'static')
+ placeholder.css("position", "relative"); // for positioning labels and overlay
+
+ if (canvasWidth <= 0 || canvasHeight <= 0)
+ throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight;
+
+ if ($.browser.msie) // excanvas hack
+ window.G_vmlCanvasManager.init_(document); // make sure everything is setup
+
+ // the canvas
+ canvas = $(makeCanvas(canvasWidth, canvasHeight)).appendTo(placeholder).get(0);
+ ctx = canvas.getContext("2d");
+
+ // overlay canvas for interactive features
+ overlay = $(makeCanvas(canvasWidth, canvasHeight)).css({ position: 'absolute', left: 0, top: 0 }).appendTo(placeholder).get(0);
+ octx = overlay.getContext("2d");
+ octx.stroke();
+ }
+
+ function bindEvents() {
+ // we include the canvas in the event holder too, because IE 7
+ // sometimes has trouble with the stacking order
+ eventHolder = $([overlay, canvas]);
+
+ // bind events
+ if (options.grid.hoverable)
+ eventHolder.mousemove(onMouseMove);
+
+ if (options.grid.clickable)
+ eventHolder.click(onClick);
+
+ executeHooks(hooks.bindEvents, [eventHolder]);
+ }
+
+ function setupGrid() {
+ function setTransformationHelpers(axis, o) {
+ function identity(x) { return x; }
+
+ var s, m, t = o.transform || identity,
+ it = o.inverseTransform;
+
+ // add transformation helpers
+ if (axis == axes.xaxis || axis == axes.x2axis) {
+ // precompute how much the axis is scaling a point
+ // in canvas space
+ s = axis.scale = plotWidth / (t(axis.max) - t(axis.min));
+ m = t(axis.min);
+
+ // data point to canvas coordinate
+ if (t == identity) // slight optimization
+ axis.p2c = function (p) { return (p - m) * s; };
+ else
+ axis.p2c = function (p) { return (t(p) - m) * s; };
+ // canvas coordinate to data point
+ if (!it)
+ axis.c2p = function (c) { return m + c / s; };
+ else
+ axis.c2p = function (c) { return it(m + c / s); };
+ }
+ else {
+ s = axis.scale = plotHeight / (t(axis.max) - t(axis.min));
+ m = t(axis.max);
+
+ if (t == identity)
+ axis.p2c = function (p) { return (m - p) * s; };
+ else
+ axis.p2c = function (p) { return (m - t(p)) * s; };
+ if (!it)
+ axis.c2p = function (c) { return m - c / s; };
+ else
+ axis.c2p = function (c) { return it(m - c / s); };
+ }
+ }
+
+ function measureLabels(axis, axisOptions) {
+ var i, labels = [], l;
+
+ axis.labelWidth = axisOptions.labelWidth;
+ axis.labelHeight = axisOptions.labelHeight;
+
+ if (axis == axes.xaxis || axis == axes.x2axis) {
+ // to avoid measuring the widths of the labels, we
+ // construct fixed-size boxes and put the labels inside
+ // them, we don't need the exact figures and the
+ // fixed-size box content is easy to center
+ if (axis.labelWidth == null)
+ axis.labelWidth = canvasWidth / (axis.ticks.length > 0 ? axis.ticks.length : 1);
+
+ // measure x label heights
+ if (axis.labelHeight == null) {
+ labels = [];
+ for (i = 0; i < axis.ticks.length; ++i) {
+ l = axis.ticks[i].label;
+ if (l)
+ labels.push('<div class="tickLabel" style="float:left;width:' + axis.labelWidth + 'px">' + l + '</div>');
+ }
+
+ if (labels.length > 0) {
+ var dummyDiv = $('<div style="position:absolute;top:-10000px;width:10000px;font-size:smaller">'
+ + labels.join("") + '<div style="clear:left"></div></div>').appendTo(placeholder);
+ axis.labelHeight = dummyDiv.height();
+ dummyDiv.remove();
+ }
+ }
+ }
+ else if (axis.labelWidth == null || axis.labelHeight == null) {
+ // calculate y label dimensions
+ for (i = 0; i < axis.ticks.length; ++i) {
+ l = axis.ticks[i].label;
+ if (l)
+ labels.push('<div class="tickLabel">' + l + '</div>');
+ }
+
+ if (labels.length > 0) {
+ var dummyDiv = $('<div style="position:absolute;top:-10000px;font-size:smaller">'
+ + labels.join("") + '</div>').appendTo(placeholder);
+ if (axis.labelWidth == null)
+ axis.labelWidth = dummyDiv.width();
+ if (axis.labelHeight == null)
+ axis.labelHeight = dummyDiv.find("div").height();
+ dummyDiv.remove();
+ }
+
+ }
+
+ if (axis.labelWidth == null)
+ axis.labelWidth = 0;
+ if (axis.labelHeight == null)
+ axis.labelHeight = 0;
+ }
+
+ function setGridSpacing() {
+ // get the most space needed around the grid for things
+ // that may stick out
+ var maxOutset = options.grid.borderWidth;
+ for (i = 0; i < series.length; ++i)
+ maxOutset = Math.max(maxOutset, 2 * (series[i].points.radius + series[i].points.lineWidth/2));
+
+ plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = maxOutset;
+
+ var margin = options.grid.labelMargin + options.grid.borderWidth;
+
+ if (axes.xaxis.labelHeight > 0)
+ plotOffset.bottom = Math.max(maxOutset, axes.xaxis.labelHeight + margin);
+ if (axes.yaxis.labelWidth > 0)
+ plotOffset.left = Math.max(maxOutset, axes.yaxis.labelWidth + margin);
+ if (axes.x2axis.labelHeight > 0)
+ plotOffset.top = Math.max(maxOutset, axes.x2axis.labelHeight + margin);
+ if (axes.y2axis.labelWidth > 0)
+ plotOffset.right = Math.max(maxOutset, axes.y2axis.labelWidth + margin);
+
+ plotWidth = canvasWidth - plotOffset.left - plotOffset.right;
+ plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;
+ }
+
+ var axis;
+ for (axis in axes)
+ setRange(axes[axis], options[axis]);
+
+ if (options.grid.show) {
+ for (axis in axes) {
+ prepareTickGeneration(axes[axis], options[axis]);
+ setTicks(axes[axis], options[axis]);
+ measureLabels(axes[axis], options[axis]);
+ }
+
+ setGridSpacing();
+ }
+ else {
+ plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;
+ plotWidth = canvasWidth;
+ plotHeight = canvasHeight;
+ }
+
+ for (axis in axes)
+ setTransformationHelpers(axes[axis], options[axis]);
+
+ if (options.grid.show)
+ insertLabels();
+
+ insertLegend();
+ }
+
+ function setRange(axis, axisOptions) {
+ var min = +(axisOptions.min != null ? axisOptions.min : axis.datamin),
+ max = +(axisOptions.max != null ? axisOptions.max : axis.datamax),
+ delta = max - min;
+
+ if (delta == 0.0) {
+ // degenerate case
+ var widen = max == 0 ? 1 : 0.01;
+
+ if (axisOptions.min == null)
+ min -= widen;
+ // alway widen max if we couldn't widen min to ensure we
+ // don't fall into min == max which doesn't work
+ if (axisOptions.max == null || axisOptions.min != null)
+ max += widen;
+ }
+ else {
+ // consider autoscaling
+ var margin = axisOptions.autoscaleMargin;
+ if (margin != null) {
+ if (axisOptions.min == null) {
+ min -= delta * margin;
+ // make sure we don't go below zero if all values
+ // are positive
+ if (min < 0 && axis.datamin != null && axis.datamin >= 0)
+ min = 0;
+ }
+ if (axisOptions.max == null) {
+ max += delta * margin;
+ if (max > 0 && axis.datamax != null && axis.datamax <= 0)
+ max = 0;
+ }
+ }
+ }
+ axis.min = min;
+ axis.max = max;
+ }
+
+ function prepareTickGeneration(axis, axisOptions) {
+ // estimate number of ticks
+ var noTicks;
+ if (typeof axisOptions.ticks == "number" && axisOptions.ticks > 0)
+ noTicks = axisOptions.ticks;
+ else if (axis == axes.xaxis || axis == axes.x2axis)
+ // heuristic based on the model a*sqrt(x) fitted to
+ // some reasonable data points
+ noTicks = 0.3 * Math.sqrt(canvasWidth);
+ else
+ noTicks = 0.3 * Math.sqrt(canvasHeight);
+
+ var delta = (axis.max - axis.min) / noTicks,
+ size, generator, unit, formatter, i, magn, norm;
+
+ if (axisOptions.mode == "time") {
+ // pretty handling of time
+
+ // map of app. size of time units in milliseconds
+ var timeUnitSize = {
+ "second": 1000,
+ "minute": 60 * 1000,
+ "hour": 60 * 60 * 1000,
+ "day": 24 * 60 * 60 * 1000,
+ "month": 30 * 24 * 60 * 60 * 1000,
+ "year": 365.2425 * 24 * 60 * 60 * 1000
+ };
+
+
+ // the allowed tick sizes, after 1 year we use
+ // an integer algorithm
+ var spec = [
+ [1, "second"], [2, "second"], [5, "second"], [10, "second"],
+ [30, "second"],
+ [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"],
+ [30, "minute"],
+ [1, "hour"], [2, "hour"], [4, "hour"],
+ [8, "hour"], [12, "hour"],
+ [1, "day"], [2, "day"], [3, "day"],
+ [0.25, "month"], [0.5, "month"], [1, "month"],
+ [2, "month"], [3, "month"], [6, "month"],
+ [1, "year"]
+ ];
+
+ var minSize = 0;
+ if (axisOptions.minTickSize != null) {
+ if (typeof axisOptions.tickSize == "number")
+ minSize = axisOptions.tickSize;
+ else
+ minSize = axisOptions.minTickSize[0] * timeUnitSize[axisOptions.minTickSize[1]];
+ }
+
+ for (i = 0; i < spec.length - 1; ++i)
+ if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]
+ + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2
+ && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)
+ break;
+ size = spec[i][0];
+ unit = spec[i][1];
+
+ // special-case the possibility of several years
+ if (unit == "year") {
+ magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));
+ norm = (delta / timeUnitSize.year) / magn;
+ if (norm < 1.5)
+ size = 1;
+ else if (norm < 3)
+ size = 2;
+ else if (norm < 7.5)
+ size = 5;
+ else
+ size = 10;
+
+ size *= magn;
+ }
+
+ if (axisOptions.tickSize) {
+ size = axisOptions.tickSize[0];
+ unit = axisOptions.tickSize[1];
+ }
+
+ generator = function(axis) {
+ var ticks = [],
+ tickSize = axis.tickSize[0], unit = axis.tickSize[1],
+ d = new Date(axis.min);
+
+ var step = tickSize * timeUnitSize[unit];
+
+ if (unit == "second")
+ d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));
+ if (unit == "minute")
+ d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));
+ if (unit == "hour")
+ d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));
+ if (unit == "month")
+ d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));
+ if (unit == "year")
+ d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));
+
+ // reset smaller components
+ d.setUTCMilliseconds(0);
+ if (step >= timeUnitSize.minute)
+ d.setUTCSeconds(0);
+ if (step >= timeUnitSize.hour)
+ d.setUTCMinutes(0);
+ if (step >= timeUnitSize.day)
+ d.setUTCHours(0);
+ if (step >= timeUnitSize.day * 4)
+ d.setUTCDate(1);
+ if (step >= timeUnitSize.year)
+ d.setUTCMonth(0);
+
+
+ var carry = 0, v = Number.NaN, prev;
+ do {
+ prev = v;
+ v = d.getTime();
+ ticks.push({ v: v, label: axis.tickFormatter(v, axis) });
+ if (unit == "month") {
+ if (tickSize < 1) {
+ // a bit complicated - we'll divide the month
+ // up but we need to take care of fractions
+ // so we don't end up in the middle of a day
+ d.setUTCDate(1);
+ var start = d.getTime();
+ d.setUTCMonth(d.getUTCMonth() + 1);
+ var end = d.getTime();
+ d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);
+ carry = d.getUTCHours();
+ d.setUTCHours(0);
+ }
+ else
+ d.setUTCMonth(d.getUTCMonth() + tickSize);
+ }
+ else if (unit == "year") {
+ d.setUTCFullYear(d.getUTCFullYear() + tickSize);
+ }
+ else
+ d.setTime(v + step);
+ } while (v < axis.max && v != prev);
+
+ return ticks;
+ };
+
+ formatter = function (v, axis) {
+ var d = new Date(v);
+
+ // first check global format
+ if (axisOptions.timeformat != null)
+ return $.plot.formatDate(d, axisOptions.timeformat, axisOptions.monthNames);
+
+ var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];
+ var span = axis.max - axis.min;
+ var suffix = (axisOptions.twelveHourClock) ? " %p" : "";
+
+ if (t < timeUnitSize.minute)
+ fmt = "%h:%M:%S" + suffix;
+ else if (t < timeUnitSize.day) {
+ if (span < 2 * timeUnitSize.day)
+ fmt = "%h:%M" + suffix;
+ else
+ fmt = "%b %d %h:%M" + suffix;
+ }
+ else if (t < timeUnitSize.month)
+ fmt = "%b %d";
+ else if (t < timeUnitSize.year) {
+ if (span < timeUnitSize.year)
+ fmt = "%b";
+ else
+ fmt = "%b %y";
+ }
+ else
+ fmt = "%y";
+
+ return $.plot.formatDate(d, fmt, axisOptions.monthNames);
+ };
+ }
+ else {
+ // pretty rounding of base-10 numbers
+ var maxDec = axisOptions.tickDecimals;
+ var dec = -Math.floor(Math.log(delta) / Math.LN10);
+ if (maxDec != null && dec > maxDec)
+ dec = maxDec;
+
+ magn = Math.pow(10, -dec);
+ norm = delta / magn; // norm is between 1.0 and 10.0
+
+ if (norm < 1.5)
+ size = 1;
+ else if (norm < 3) {
+ size = 2;
+ // special case for 2.5, requires an extra decimal
+ if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {
+ size = 2.5;
+ ++dec;
+ }
+ }
+ else if (norm < 7.5)
+ size = 5;
+ else
+ size = 10;
+
+ size *= magn;
+
+ if (axisOptions.minTickSize != null && size < axisOptions.minTickSize)
+ size = axisOptions.minTickSize;
+
+ if (axisOptions.tickSize != null)
+ size = axisOptions.tickSize;
+
+ axis.tickDecimals = Math.max(0, (maxDec != null) ? maxDec : dec);
+
+ generator = function (axis) {
+ var ticks = [];
+
+ // spew out all possible ticks
+ var start = floorInBase(axis.min, axis.tickSize),
+ i = 0, v = Number.NaN, prev;
+ do {
+ prev = v;
+ v = start + i * axis.tickSize;
+ ticks.push({ v: v, label: axis.tickFormatter(v, axis) });
+ ++i;
+ } while (v < axis.max && v != prev);
+ return ticks;
+ };
+
+ formatter = function (v, axis) {
+ return v.toFixed(axis.tickDecimals);
+ };
+ }
+
+ axis.tickSize = unit ? [size, unit] : size;
+ axis.tickGenerator = generator;
+ if ($.isFunction(axisOptions.tickFormatter))
+ axis.tickFormatter = function (v, axis) { return "" + axisOptions.tickFormatter(v, axis); };
+ else
+ axis.tickFormatter = formatter;
+ }
+
+ function setTicks(axis, axisOptions) {
+ axis.ticks = [];
+
+ if (!axis.used)
+ return;
+
+ if (axisOptions.ticks == null)
+ axis.ticks = axis.tickGenerator(axis);
+ else if (typeof axisOptions.ticks == "number") {
+ if (axisOptions.ticks > 0)
+ axis.ticks = axis.tickGenerator(axis);
+ }
+ else if (axisOptions.ticks) {
+ var ticks = axisOptions.ticks;
+
+ if ($.isFunction(ticks))
+ // generate the ticks
+ ticks = ticks({ min: axis.min, max: axis.max });
+
+ // clean up the user-supplied ticks, copy them over
+ var i, v;
+ for (i = 0; i < ticks.length; ++i) {
+ var label = null;
+ var t = ticks[i];
+ if (typeof t == "object") {
+ v = t[0];
+ if (t.length > 1)
+ label = t[1];
+ }
+ else
+ v = t;
+ if (label == null)
+ label = axis.tickFormatter(v, axis);
+ axis.ticks[i] = { v: v, label: label };
+ }
+ }
+
+ if (axisOptions.autoscaleMargin != null && axis.ticks.length > 0) {
+ // snap to ticks
+ if (axisOptions.min == null)
+ axis.min = Math.min(axis.min, axis.ticks[0].v);
+ if (axisOptions.max == null && axis.ticks.length > 1)
+ axis.max = Math.max(axis.max, axis.ticks[axis.ticks.length - 1].v);
+ }
+ }
+
+ function draw() {
+ ctx.clearRect(0, 0, canvasWidth, canvasHeight);
+
+ var grid = options.grid;
+
+ if (grid.show && !grid.aboveData)
+ drawGrid();
+
+ for (var i = 0; i < series.length; ++i)
+ drawSeries(series[i]);
+
+ executeHooks(hooks.draw, [ctx]);
+
+ if (grid.show && grid.aboveData)
+ drawGrid();
+ }
+
+ function extractRange(ranges, coord) {
+ var firstAxis = coord + "axis",
+ secondaryAxis = coord + "2axis",
+ axis, from, to, reverse;
+
+ if (ranges[firstAxis]) {
+ axis = axes[firstAxis];
+ from = ranges[firstAxis].from;
+ to = ranges[firstAxis].to;
+ }
+ else if (ranges[secondaryAxis]) {
+ axis = axes[secondaryAxis];
+ from = ranges[secondaryAxis].from;
+ to = ranges[secondaryAxis].to;
+ }
+ else {
+ // backwards-compat stuff - to be removed in future
+ axis = axes[firstAxis];
+ from = ranges[coord + "1"];
+ to = ranges[coord + "2"];
+ }
+
+ // auto-reverse as an added bonus
+ if (from != null && to != null && from > to)
+ return { from: to, to: from, axis: axis };
+
+ return { from: from, to: to, axis: axis };
+ }
+
+ function drawGrid() {
+ var i;
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ // draw background, if any
+ if (options.grid.backgroundColor) {
+ ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)");
+ ctx.fillRect(0, 0, plotWidth, plotHeight);
+ }
+
+ // draw markings
+ var markings = options.grid.markings;
+ if (markings) {
+ if ($.isFunction(markings))
+ // xmin etc. are backwards-compatible, to be removed in future
+ markings = markings({ xmin: axes.xaxis.min, xmax: axes.xaxis.max, ymin: axes.yaxis.min, ymax: axes.yaxis.max, xaxis: axes.xaxis, yaxis: axes.yaxis, x2axis: axes.x2axis, y2axis: axes.y2axis });
+
+ for (i = 0; i < markings.length; ++i) {
+ var m = markings[i],
+ xrange = extractRange(m, "x"),
+ yrange = extractRange(m, "y");
+
+ // fill in missing
+ if (xrange.from == null)
+ xrange.from = xrange.axis.min;
+ if (xrange.to == null)
+ xrange.to = xrange.axis.max;
+ if (yrange.from == null)
+ yrange.from = yrange.axis.min;
+ if (yrange.to == null)
+ yrange.to = yrange.axis.max;
+
+ // clip
+ if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||
+ yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)
+ continue;
+
+ xrange.from = Math.max(xrange.from, xrange.axis.min);
+ xrange.to = Math.min(xrange.to, xrange.axis.max);
+ yrange.from = Math.max(yrange.from, yrange.axis.min);
+ yrange.to = Math.min(yrange.to, yrange.axis.max);
+
+ if (xrange.from == xrange.to && yrange.from == yrange.to)
+ continue;
+
+ // then draw
+ xrange.from = xrange.axis.p2c(xrange.from);
+ xrange.to = xrange.axis.p2c(xrange.to);
+ yrange.from = yrange.axis.p2c(yrange.from);
+ yrange.to = yrange.axis.p2c(yrange.to);
+
+ if (xrange.from == xrange.to || yrange.from == yrange.to) {
+ // draw line
+ ctx.beginPath();
+ ctx.strokeStyle = m.color || options.grid.markingsColor;
+ ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;
+ //ctx.moveTo(Math.floor(xrange.from), yrange.from);
+ //ctx.lineTo(Math.floor(xrange.to), yrange.to);
+ ctx.moveTo(xrange.from, yrange.from);
+ ctx.lineTo(xrange.to, yrange.to);
+ ctx.stroke();
+ }
+ else {
+ // fill area
+ ctx.fillStyle = m.color || options.grid.markingsColor;
+ ctx.fillRect(xrange.from, yrange.to,
+ xrange.to - xrange.from,
+ yrange.from - yrange.to);
+ }
+ }
+ }
+
+ // draw the inner grid
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = options.grid.tickColor;
+ ctx.beginPath();
+ var v, axis = axes.xaxis;
+ for (i = 0; i < axis.ticks.length; ++i) {
+ v = axis.ticks[i].v;
+ if (v <= axis.min || v >= axes.xaxis.max)
+ continue; // skip those lying on the axes
+
+ ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 0);
+ ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, plotHeight);
+ }
+
+ axis = axes.yaxis;
+ for (i = 0; i < axis.ticks.length; ++i) {
+ v = axis.ticks[i].v;
+ if (v <= axis.min || v >= axis.max)
+ continue;
+
+ ctx.moveTo(0, Math.floor(axis.p2c(v)) + ctx.lineWidth/2);
+ ctx.lineTo(plotWidth, Math.floor(axis.p2c(v)) + ctx.lineWidth/2);
+ }
+
+ axis = axes.x2axis;
+ for (i = 0; i < axis.ticks.length; ++i) {
+ v = axis.ticks[i].v;
+ if (v <= axis.min || v >= axis.max)
+ continue;
+
+ ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, -5);
+ ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 5);
+ }
+
+ axis = axes.y2axis;
+ for (i = 0; i < axis.ticks.length; ++i) {
+ v = axis.ticks[i].v;
+ if (v <= axis.min || v >= axis.max)
+ continue;
+
+ ctx.moveTo(plotWidth-5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2);
+ ctx.lineTo(plotWidth+5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2);
+ }
+
+ ctx.stroke();
+
+ if (options.grid.borderWidth) {
+ // draw border
+ var bw = options.grid.borderWidth;
+ ctx.lineWidth = bw;
+ ctx.strokeStyle = options.grid.borderColor;
+ ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);
+ }
+
+ ctx.restore();
+ }
+
+ function insertLabels() {
+ placeholder.find(".tickLabels").remove();
+
+ var html = ['<div class="tickLabels" style="font-size:smaller;color:' + options.grid.color + '">'];
+
+ function addLabels(axis, labelGenerator) {
+ for (var i = 0; i < axis.ticks.length; ++i) {
+ var tick = axis.ticks[i];
+ if (!tick.label || tick.v < axis.min || tick.v > axis.max)
+ continue;
+ html.push(labelGenerator(tick, axis));
+ }
+ }
+
+ var margin = options.grid.labelMargin + options.grid.borderWidth;
+
+ addLabels(axes.xaxis, function (tick, axis) {
+ return '<div style="position:absolute;top:' + (plotOffset.top + plotHeight + margin) + 'px;left:' + Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2) + 'px;width:' + axis.labelWidth + 'px;text-align:center" class="tickLabel">' + tick.label + "</div>";
+ });
+
+
+ addLabels(axes.yaxis, function (tick, axis) {
+ return '<div style="position:absolute;top:' + Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2) + 'px;right:' + (plotOffset.right + plotWidth + margin) + 'px;width:' + axis.labelWidth + 'px;text-align:right" class="tickLabel">' + tick.label + "</div>";
+ });
+
+ addLabels(axes.x2axis, function (tick, axis) {
+ return '<div style="position:absolute;bottom:' + (plotOffset.bottom + plotHeight + margin) + 'px;left:' + Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2) + 'px;width:' + axis.labelWidth + 'px;text-align:center" class="tickLabel">' + tick.label + "</div>";
+ });
+
+ addLabels(axes.y2axis, function (tick, axis) {
+ return '<div style="position:absolute;top:' + Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2) + 'px;left:' + (plotOffset.left + plotWidth + margin) +'px;width:' + axis.labelWidth + 'px;text-align:left" class="tickLabel">' + tick.label + "</div>";
+ });
+
+ html.push('</div>');
+
+ placeholder.append(html.join(""));
+ }
+
+ function drawSeries(series) {
+ if (series.lines.show)
+ drawSeriesLines(series);
+ if (series.bars.show)
+ drawSeriesBars(series);
+ if (series.points.show)
+ drawSeriesPoints(series);
+ }
+
+ function drawSeriesLines(series) {
+ function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {
+ var points = datapoints.points,
+ ps = datapoints.pointsize,
+ prevx = null, prevy = null;
+
+ ctx.beginPath();
+ for (var i = ps; i < points.length; i += ps) {
+ var x1 = points[i - ps], y1 = points[i - ps + 1],
+ x2 = points[i], y2 = points[i + 1];
+
+ if (x1 == null || x2 == null)
+ continue;
+
+ // clip with ymin
+ if (y1 <= y2 && y1 < axisy.min) {
+ if (y2 < axisy.min)
+ continue; // line segment is outside
+ // compute new intersection point
+ x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.min;
+ }
+ else if (y2 <= y1 && y2 < axisy.min) {
+ if (y1 < axisy.min)
+ continue;
+ x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.min;
+ }
+
+ // clip with ymax
+ if (y1 >= y2 && y1 > axisy.max) {
+ if (y2 > axisy.max)
+ continue;
+ x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.max;
+ }
+ else if (y2 >= y1 && y2 > axisy.max) {
+ if (y1 > axisy.max)
+ continue;
+ x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.max;
+ }
+
+ // clip with xmin
+ if (x1 <= x2 && x1 < axisx.min) {
+ if (x2 < axisx.min)
+ continue;
+ y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.min;
+ }
+ else if (x2 <= x1 && x2 < axisx.min) {
+ if (x1 < axisx.min)
+ continue;
+ y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.min;
+ }
+
+ // clip with xmax
+ if (x1 >= x2 && x1 > axisx.max) {
+ if (x2 > axisx.max)
+ continue;
+ y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.max;
+ }
+ else if (x2 >= x1 && x2 > axisx.max) {
+ if (x1 > axisx.max)
+ continue;
+ y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.max;
+ }
+
+ if (x1 != prevx || y1 != prevy)
+ ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);
+
+ prevx = x2;
+ prevy = y2;
+ ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);
+ }
+ ctx.stroke();
+ }
+
+ function plotLineArea(datapoints, axisx, axisy) {
+ var points = datapoints.points,
+ ps = datapoints.pointsize,
+ bottom = Math.min(Math.max(0, axisy.min), axisy.max),
+ top, lastX = 0, areaOpen = false;
+
+ for (var i = ps; i < points.length; i += ps) {
+ var x1 = points[i - ps], y1 = points[i - ps + 1],
+ x2 = points[i], y2 = points[i + 1];
+
+ if (areaOpen && x1 != null && x2 == null) {
+ // close area
+ ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom));
+ ctx.fill();
+ areaOpen = false;
+ continue;
+ }
+
+ if (x1 == null || x2 == null)
+ continue;
+
+ // clip x values
+
+ // clip with xmin
+ if (x1 <= x2 && x1 < axisx.min) {
+ if (x2 < axisx.min)
+ continue;
+ y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.min;
+ }
+ else if (x2 <= x1 && x2 < axisx.min) {
+ if (x1 < axisx.min)
+ continue;
+ y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.min;
+ }
+
+ // clip with xmax
+ if (x1 >= x2 && x1 > axisx.max) {
+ if (x2 > axisx.max)
+ continue;
+ y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.max;
+ }
+ else if (x2 >= x1 && x2 > axisx.max) {
+ if (x1 > axisx.max)
+ continue;
+ y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.max;
+ }
+
+ if (!areaOpen) {
+ // open area
+ ctx.beginPath();
+ ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));
+ areaOpen = true;
+ }
+
+ // now first check the case where both is outside
+ if (y1 >= axisy.max && y2 >= axisy.max) {
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));
+ lastX = x2;
+ continue;
+ }
+ else if (y1 <= axisy.min && y2 <= axisy.min) {
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));
+ lastX = x2;
+ continue;
+ }
+
+ // else it's a bit more complicated, there might
+ // be two rectangles and two triangles we need to fill
+ // in; to find these keep track of the current x values
+ var x1old = x1, x2old = x2;
+
+ // and clip the y values, without shortcutting
+
+ // clip with ymin
+ if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {
+ x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.min;
+ }
+ else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {
+ x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.min;
+ }
+
+ // clip with ymax
+ if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {
+ x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.max;
+ }
+ else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {
+ x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.max;
+ }
+
+
+ // if the x value was changed we got a rectangle
+ // to fill
+ if (x1 != x1old) {
+ if (y1 <= axisy.min)
+ top = axisy.min;
+ else
+ top = axisy.max;
+
+ ctx.lineTo(axisx.p2c(x1old), axisy.p2c(top));
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(top));
+ }
+
+ // fill the triangles
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
+
+ // fill the other rectangle if it's there
+ if (x2 != x2old) {
+ if (y2 <= axisy.min)
+ top = axisy.min;
+ else
+ top = axisy.max;
+
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(top));
+ ctx.lineTo(axisx.p2c(x2old), axisy.p2c(top));
+ }
+
+ lastX = Math.max(x2, x2old);
+ }
+
+ if (areaOpen) {
+ ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom));
+ ctx.fill();
+ }
+ }
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+ ctx.lineJoin = "round";
+
+ var lw = series.lines.lineWidth,
+ sw = series.shadowSize;
+ // FIXME: consider another form of shadow when filling is turned on
+ if (lw > 0 && sw > 0) {
+ // draw shadow as a thick and thin line with transparency
+ ctx.lineWidth = sw;
+ ctx.strokeStyle = "rgba(0,0,0,0.1)";
+ // position shadow at angle from the mid of line
+ var angle = Math.PI/18;
+ plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);
+ ctx.lineWidth = sw/2;
+ plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);
+ }
+
+ ctx.lineWidth = lw;
+ ctx.strokeStyle = series.color;
+ var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);
+ if (fillStyle) {
+ ctx.fillStyle = fillStyle;
+ plotLineArea(series.datapoints, series.xaxis, series.yaxis);
+ }
+
+ if (lw > 0)
+ plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);
+ ctx.restore();
+ }
+
+ function drawSeriesPoints(series) {
+ function plotPoints(datapoints, radius, fillStyle, offset, circumference, axisx, axisy) {
+ var points = datapoints.points, ps = datapoints.pointsize;
+
+ for (var i = 0; i < points.length; i += ps) {
+ var x = points[i], y = points[i + 1];
+ if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
+ continue;
+
+ ctx.beginPath();
+ ctx.arc(axisx.p2c(x), axisy.p2c(y) + offset, radius, 0, circumference, false);
+ if (fillStyle) {
+ ctx.fillStyle = fillStyle;
+ ctx.fill();
+ }
+ ctx.stroke();
+ }
+ }
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ var lw = series.lines.lineWidth,
+ sw = series.shadowSize,
+ radius = series.points.radius;
+ if (lw > 0 && sw > 0) {
+ // draw shadow in two steps
+ var w = sw / 2;
+ ctx.lineWidth = w;
+ ctx.strokeStyle = "rgba(0,0,0,0.1)";
+ plotPoints(series.datapoints, radius, null, w + w/2, Math.PI,
+ series.xaxis, series.yaxis);
+
+ ctx.strokeStyle = "rgba(0,0,0,0.2)";
+ plotPoints(series.datapoints, radius, null, w/2, Math.PI,
+ series.xaxis, series.yaxis);
+ }
+
+ ctx.lineWidth = lw;
+ ctx.strokeStyle = series.color;
+ plotPoints(series.datapoints, radius,
+ getFillStyle(series.points, series.color), 0, 2 * Math.PI,
+ series.xaxis, series.yaxis);
+ ctx.restore();
+ }
+
+ function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal) {
+ var left, right, bottom, top,
+ drawLeft, drawRight, drawTop, drawBottom,
+ tmp;
+
+ if (horizontal) {
+ drawBottom = drawRight = drawTop = true;
+ drawLeft = false;
+ left = b;
+ right = x;
+ top = y + barLeft;
+ bottom = y + barRight;
+
+ // account for negative bars
+ if (right < left) {
+ tmp = right;
+ right = left;
+ left = tmp;
+ drawLeft = true;
+ drawRight = false;
+ }
+ }
+ else {
+ drawLeft = drawRight = drawTop = true;
+ drawBottom = false;
+ left = x + barLeft;
+ right = x + barRight;
+ bottom = b;
+ top = y;
+
+ // account for negative bars
+ if (top < bottom) {
+ tmp = top;
+ top = bottom;
+ bottom = tmp;
+ drawBottom = true;
+ drawTop = false;
+ }
+ }
+
+ // clip
+ if (right < axisx.min || left > axisx.max ||
+ top < axisy.min || bottom > axisy.max)
+ return;
+
+ if (left < axisx.min) {
+ left = axisx.min;
+ drawLeft = false;
+ }
+
+ if (right > axisx.max) {
+ right = axisx.max;
+ drawRight = false;
+ }
+
+ if (bottom < axisy.min) {
+ bottom = axisy.min;
+ drawBottom = false;
+ }
+
+ if (top > axisy.max) {
+ top = axisy.max;
+ drawTop = false;
+ }
+
+ left = axisx.p2c(left);
+ bottom = axisy.p2c(bottom);
+ right = axisx.p2c(right);
+ top = axisy.p2c(top);
+
+ // fill the bar
+ if (fillStyleCallback) {
+ c.beginPath();
+ c.moveTo(left, bottom);
+ c.lineTo(left, top);
+ c.lineTo(right, top);
+ c.lineTo(right, bottom);
+ c.fillStyle = fillStyleCallback(bottom, top);
+ c.fill();
+ }
+
+ // draw outline
+ if (drawLeft || drawRight || drawTop || drawBottom) {
+ c.beginPath();
+
+ // FIXME: inline moveTo is buggy with excanvas
+ c.moveTo(left, bottom + offset);
+ if (drawLeft)
+ c.lineTo(left, top + offset);
+ else
+ c.moveTo(left, top + offset);
+ if (drawTop)
+ c.lineTo(right, top + offset);
+ else
+ c.moveTo(right, top + offset);
+ if (drawRight)
+ c.lineTo(right, bottom + offset);
+ else
+ c.moveTo(right, bottom + offset);
+ if (drawBottom)
+ c.lineTo(left, bottom + offset);
+ else
+ c.moveTo(left, bottom + offset);
+ c.stroke();
+ }
+ }
+
+ function drawSeriesBars(series) {
+ function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {
+ var points = datapoints.points, ps = datapoints.pointsize;
+
+ for (var i = 0; i < points.length; i += ps) {
+ if (points[i] == null)
+ continue;
+ drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal);
+ }
+ }
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ // FIXME: figure out a way to add shadows (for instance along the right edge)
+ ctx.lineWidth = series.bars.lineWidth;
+ ctx.strokeStyle = series.color;
+ var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2;
+ var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;
+ plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);
+ ctx.restore();
+ }
+
+ function getFillStyle(filloptions, seriesColor, bottom, top) {
+ var fill = filloptions.fill;
+ if (!fill)
+ return null;
+
+ if (filloptions.fillColor)
+ return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);
+
+ var c = $.color.parse(seriesColor);
+ c.a = typeof fill == "number" ? fill : 0.4;
+ c.normalize();
+ return c.toString();
+ }
+
+ function insertLegend() {
+ placeholder.find(".legend").remove();
+
+ if (!options.legend.show)
+ return;
+
+ var fragments = [], rowStarted = false,
+ lf = options.legend.labelFormatter, s, label;
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+ label = s.label;
+ if (!label)
+ continue;
+
+ if (i % options.legend.noColumns == 0) {
+ if (rowStarted)
+ fragments.push('</tr>');
+ fragments.push('<tr>');
+ rowStarted = true;
+ }
+
+ if (lf)
+ label = lf(label, s);
+
+ fragments.push(
+ '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden"></div></div></td>' +
+ '<td class="legendLabel">' + label + '</td>');
+ }
+ if (rowStarted)
+ fragments.push('</tr>');
+
+ if (fragments.length == 0)
+ return;
+
+ var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>';
+ if (options.legend.container != null)
+ $(options.legend.container).html(table);
+ else {
+ var pos = "",
+ p = options.legend.position,
+ m = options.legend.margin;
+ if (m[0] == null)
+ m = [m, m];
+ if (p.charAt(0) == "n")
+ pos += 'top:' + (m[1] + plotOffset.top) + 'px;';
+ else if (p.charAt(0) == "s")
+ pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';
+ if (p.charAt(1) == "e")
+ pos += 'right:' + (m[0] + plotOffset.right) + 'px;';
+ else if (p.charAt(1) == "w")
+ pos += 'left:' + (m[0] + plotOffset.left) + 'px;';
+ var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder);
+ if (options.legend.backgroundOpacity != 0.0) {
+ // put in the transparent background
+ // separately to avoid blended labels and
+ // label boxes
+ var c = options.legend.backgroundColor;
+ if (c == null) {
+ c = options.grid.backgroundColor;
+ if (c && typeof c == "string")
+ c = $.color.parse(c);
+ else
+ c = $.color.extract(legend, 'background-color');
+ c.a = 1;
+ c = c.toString();
+ }
+ var div = legend.children();
+ $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);
+ }
+ }
+ }
+
+
+ // interactive features
+
+ var highlights = [],
+ redrawTimeout = null;
+
+ // returns the data item the mouse is over, or null if none is found
+ function findNearbyItem(mouseX, mouseY, seriesFilter) {
+ var maxDistance = options.grid.mouseActiveRadius,
+ smallestDistance = maxDistance * maxDistance + 1,
+ item = null, foundPoint = false, i, j;
+
+ for (i = 0; i < series.length; ++i) {
+ if (!seriesFilter(series[i]))
+ continue;
+
+ var s = series[i],
+ axisx = s.xaxis,
+ axisy = s.yaxis,
+ points = s.datapoints.points,
+ ps = s.datapoints.pointsize,
+ mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster
+ my = axisy.c2p(mouseY),
+ maxx = maxDistance / axisx.scale,
+ maxy = maxDistance / axisy.scale;
+
+ if (s.lines.show || s.points.show) {
+ for (j = 0; j < points.length; j += ps) {
+ var x = points[j], y = points[j + 1];
+ if (x == null)
+ continue;
+
+ // For points and lines, the cursor must be within a
+ // certain distance to the data point
+ if (x - mx > maxx || x - mx < -maxx ||
+ y - my > maxy || y - my < -maxy)
+ continue;
+
+ // We have to calculate distances in pixels, not in
+ // data units, because the scales of the axes may be different
+ var dx = Math.abs(axisx.p2c(x) - mouseX),
+ dy = Math.abs(axisy.p2c(y) - mouseY),
+ dist = dx * dx + dy * dy; // we save the sqrt
+
+ // use <= to ensure last point takes precedence
+ // (last generally means on top of)
+ if (dist <= smallestDistance) {
+ smallestDistance = dist;
+ item = [i, j / ps];
+ }
+ }
+ }
+
+ if (s.bars.show && !item) { // no other point can be nearby
+ var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2,
+ barRight = barLeft + s.bars.barWidth;
+
+ for (j = 0; j < points.length; j += ps) {
+ var x = points[j], y = points[j + 1], b = points[j + 2];
+ if (x == null)
+ continue;
+
+ // for a bar graph, the cursor must be inside the bar
+ if (series[i].bars.horizontal ?
+ (mx <= Math.max(b, x) && mx >= Math.min(b, x) &&
+ my >= y + barLeft && my <= y + barRight) :
+ (mx >= x + barLeft && mx <= x + barRight &&
+ my >= Math.min(b, y) && my <= Math.max(b, y)))
+ item = [i, j / ps];
+ }
+ }
+ }
+
+ if (item) {
+ i = item[0];
+ j = item[1];
+ ps = series[i].datapoints.pointsize;
+
+ return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),
+ dataIndex: j,
+ series: series[i],
+ seriesIndex: i };
+ }
+
+ return null;
+ }
+
+ function onMouseMove(e) {
+ if (options.grid.hoverable)
+ triggerClickHoverEvent("plothover", e,
+ function (s) { return s["hoverable"] != false; });
+ }
+
+ function onClick(e) {
+ triggerClickHoverEvent("plotclick", e,
+ function (s) { return s["clickable"] != false; });
+ }
+
+ // trigger click or hover event (they send the same parameters
+ // so we share their code)
+ function triggerClickHoverEvent(eventname, event, seriesFilter) {
+ var offset = eventHolder.offset(),
+ pos = { pageX: event.pageX, pageY: event.pageY },
+ canvasX = event.pageX - offset.left - plotOffset.left,
+ canvasY = event.pageY - offset.top - plotOffset.top;
+
+ if (axes.xaxis.used)
+ pos.x = axes.xaxis.c2p(canvasX);
+ if (axes.yaxis.used)
+ pos.y = axes.yaxis.c2p(canvasY);
+ if (axes.x2axis.used)
+ pos.x2 = axes.x2axis.c2p(canvasX);
+ if (axes.y2axis.used)
+ pos.y2 = axes.y2axis.c2p(canvasY);
+
+ var item = findNearbyItem(canvasX, canvasY, seriesFilter);
+
+ if (item) {
+ // fill in mouse pos for any listeners out there
+ item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left);
+ item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top);
+ }
+
+ if (options.grid.autoHighlight) {
+ // clear auto-highlights
+ for (var i = 0; i < highlights.length; ++i) {
+ var h = highlights[i];
+ if (h.auto == eventname &&
+ !(item && h.series == item.series && h.point == item.datapoint))
+ unhighlight(h.series, h.point);
+ }
+
+ if (item)
+ highlight(item.series, item.datapoint, eventname);
+ }
+
+ placeholder.trigger(eventname, [ pos, item ]);
+ }
+
+ function triggerRedrawOverlay() {
+ if (!redrawTimeout)
+ redrawTimeout = setTimeout(drawOverlay, 30);
+ }
+
+ function drawOverlay() {
+ redrawTimeout = null;
+
+ // draw highlights
+ octx.save();
+ octx.clearRect(0, 0, canvasWidth, canvasHeight);
+ octx.translate(plotOffset.left, plotOffset.top);
+
+ var i, hi;
+ for (i = 0; i < highlights.length; ++i) {
+ hi = highlights[i];
+
+ if (hi.series.bars.show)
+ drawBarHighlight(hi.series, hi.point);
+ else
+ drawPointHighlight(hi.series, hi.point);
+ }
+ octx.restore();
+
+ executeHooks(hooks.drawOverlay, [octx]);
+ }
+
+ function highlight(s, point, auto) {
+ if (typeof s == "number")
+ s = series[s];
+
+ if (typeof point == "number")
+ point = s.data[point];
+
+ var i = indexOfHighlight(s, point);
+ if (i == -1) {
+ highlights.push({ series: s, point: point, auto: auto });
+
+ triggerRedrawOverlay();
+ }
+ else if (!auto)
+ highlights[i].auto = false;
+ }
+
+ function unhighlight(s, point) {
+ if (s == null && point == null) {
+ highlights = [];
+ triggerRedrawOverlay();
+ }
+
+ if (typeof s == "number")
+ s = series[s];
+
+ if (typeof point == "number")
+ point = s.data[point];
+
+ var i = indexOfHighlight(s, point);
+ if (i != -1) {
+ highlights.splice(i, 1);
+
+ triggerRedrawOverlay();
+ }
+ }
+
+ function indexOfHighlight(s, p) {
+ for (var i = 0; i < highlights.length; ++i) {
+ var h = highlights[i];
+ if (h.series == s && h.point[0] == p[0]
+ && h.point[1] == p[1])
+ return i;
+ }
+ return -1;
+ }
+
+ function drawPointHighlight(series, point) {
+ var x = point[0], y = point[1],
+ axisx = series.xaxis, axisy = series.yaxis;
+
+ if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
+ return;
+
+ var pointRadius = series.points.radius + series.points.lineWidth / 2;
+ octx.lineWidth = pointRadius;
+ octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();
+ var radius = 1.5 * pointRadius;
+ octx.beginPath();
+ octx.arc(axisx.p2c(x), axisy.p2c(y), radius, 0, 2 * Math.PI, false);
+ octx.stroke();
+ }
+
+ function drawBarHighlight(series, point) {
+ octx.lineWidth = series.bars.lineWidth;
+ octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();
+ var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();
+ var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2;
+ drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,
+ 0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal);
+ }
+
+ function getColorOrGradient(spec, bottom, top, defaultColor) {
+ if (typeof spec == "string")
+ return spec;
+ else {
+ // assume this is a gradient spec; IE currently only
+ // supports a simple vertical gradient properly, so that's
+ // what we support too
+ var gradient = ctx.createLinearGradient(0, top, 0, bottom);
+
+ for (var i = 0, l = spec.colors.length; i < l; ++i) {
+ var c = spec.colors[i];
+ if (typeof c != "string") {
+ c = $.color.parse(defaultColor).scale('rgb', c.brightness);
+ c.a *= c.opacity;
+ c = c.toString();
+ }
+ gradient.addColorStop(i / (l - 1), c);
+ }
+
+ return gradient;
+ }
+ }
+ }
+
+ $.plot = function(placeholder, data, options) {
+ var plot = new Plot($(placeholder), data, options, $.plot.plugins);
+ /*var t0 = new Date();
+ var t1 = new Date();
+ var tstr = "time used (msecs): " + (t1.getTime() - t0.getTime())
+ if (window.console)
+ console.log(tstr);
+ else
+ alert(tstr);*/
+ return plot;
+ };
+
+ $.plot.plugins = [];
+
+ // returns a string with the date d formatted according to fmt
+ $.plot.formatDate = function(d, fmt, monthNames) {
+ var leftPad = function(n) {
+ n = "" + n;
+ return n.length == 1 ? "0" + n : n;
+ };
+
+ var r = [];
+ var escape = false;
+ var hours = d.getUTCHours();
+ var isAM = hours < 12;
+ if (monthNames == null)
+ monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+
+ if (fmt.search(/%p|%P/) != -1) {
+ if (hours > 12) {
+ hours = hours - 12;
+ } else if (hours == 0) {
+ hours = 12;
+ }
+ }
+ for (var i = 0; i < fmt.length; ++i) {
+ var c = fmt.charAt(i);
+
+ if (escape) {
+ switch (c) {
+ case 'h': c = "" + hours; break;
+ case 'H': c = leftPad(hours); break;
+ case 'M': c = leftPad(d.getUTCMinutes()); break;
+ case 'S': c = leftPad(d.getUTCSeconds()); break;
+ case 'd': c = "" + d.getUTCDate(); break;
+ case 'm': c = "" + (d.getUTCMonth() + 1); break;
+ case 'y': c = "" + d.getUTCFullYear(); break;
+ case 'b': c = "" + monthNames[d.getUTCMonth()]; break;
+ case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break;
+ case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break;
+ }
+ r.push(c);
+ escape = false;
+ }
+ else {
+ if (c == "%")
+ escape = true;
+ else
+ r.push(c);
+ }
+ }
+ return r.join("");
+ };
+
+ // round to nearby lower multiple of base
+ function floorInBase(n, base) {
+ return base * Math.floor(n / base);
+ }
+
+})(jQuery);
diff --git a/askbot/skins/old/media/js/jquery.flot.min.js b/askbot/skins/old/media/js/jquery.flot.min.js
new file mode 100644
index 00000000..31f465b8
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.flot.min.js
@@ -0,0 +1 @@
+(function(){jQuery.color={};jQuery.color.make=function(G,H,J,I){var A={};A.r=G||0;A.g=H||0;A.b=J||0;A.a=I!=null?I:1;A.add=function(C,D){for(var E=0;E<C.length;++E){A[C.charAt(E)]+=D}return A.normalize()};A.scale=function(C,D){for(var E=0;E<C.length;++E){A[C.charAt(E)]*=D}return A.normalize()};A.toString=function(){if(A.a>=1){return"rgb("+[A.r,A.g,A.b].join(",")+")"}else{return"rgba("+[A.r,A.g,A.b,A.a].join(",")+")"}};A.normalize=function(){function C(E,D,F){return D<E?E:(D>F?F:D)}A.r=C(0,parseInt(A.r),255);A.g=C(0,parseInt(A.g),255);A.b=C(0,parseInt(A.b),255);A.a=C(0,A.a,1);return A};A.clone=function(){return jQuery.color.make(A.r,A.b,A.g,A.a)};return A.normalize()};jQuery.color.extract=function(E,F){var A;do{A=E.css(F).toLowerCase();if(A!=""&&A!="transparent"){break}E=E.parent()}while(!jQuery.nodeName(E.get(0),"body"));if(A=="rgba(0, 0, 0, 0)"){A="transparent"}return jQuery.color.parse(A)};jQuery.color.parse=function(A){var F,H=jQuery.color.make;if(F=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(A)){return H(parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10))}if(F=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(A)){return H(parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10),parseFloat(F[4]))}if(F=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(A)){return H(parseFloat(F[1])*2.55,parseFloat(F[2])*2.55,parseFloat(F[3])*2.55)}if(F=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(A)){return H(parseFloat(F[1])*2.55,parseFloat(F[2])*2.55,parseFloat(F[3])*2.55,parseFloat(F[4]))}if(F=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(A)){return H(parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16))}if(F=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(A)){return H(parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16))}var G=jQuery.trim(A).toLowerCase();if(G=="transparent"){return H(255,255,255,0)}else{F=B[G];return H(F[0],F[1],F[2])}};var B={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})();(function(C){function B(l,W,X,E){var O=[],g={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{mode:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null,twelveHourClock:false},yaxis:{autoscaleMargin:0.02},x2axis:{autoscaleMargin:null},y2axis:{autoscaleMargin:0.02},series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false},shadowSize:3},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,tickColor:"rgba(0,0,0,0.15)",labelMargin:5,borderWidth:2,borderColor:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},hooks:{}},P=null,AC=null,AD=null,Y=null,AJ=null,s={xaxis:{},yaxis:{},x2axis:{},y2axis:{}},e={left:0,right:0,top:0,bottom:0},y=0,Q=0,I=0,t=0,L={processOptions:[],processRawData:[],processDatapoints:[],draw:[],bindEvents:[],drawOverlay:[]},G=this;G.setData=f;G.setupGrid=k;G.draw=AH;G.getPlaceholder=function(){return l};G.getCanvas=function(){return P};G.getPlotOffset=function(){return e};G.width=function(){return I};G.height=function(){return t};G.offset=function(){var AK=AD.offset();AK.left+=e.left;AK.top+=e.top;return AK};G.getData=function(){return O};G.getAxes=function(){return s};G.getOptions=function(){return g};G.highlight=AE;G.unhighlight=x;G.triggerRedrawOverlay=q;G.pointOffset=function(AK){return{left:parseInt(T(AK,"xaxis").p2c(+AK.x)+e.left),top:parseInt(T(AK,"yaxis").p2c(+AK.y)+e.top)}};G.hooks=L;b(G);r(X);c();f(W);k();AH();AG();function Z(AM,AK){AK=[G].concat(AK);for(var AL=0;AL<AM.length;++AL){AM[AL].apply(this,AK)}}function b(){for(var AK=0;AK<E.length;++AK){var AL=E[AK];AL.init(G);if(AL.options){C.extend(true,g,AL.options)}}}function r(AK){C.extend(true,g,AK);if(g.grid.borderColor==null){g.grid.borderColor=g.grid.color}if(g.xaxis.noTicks&&g.xaxis.ticks==null){g.xaxis.ticks=g.xaxis.noTicks}if(g.yaxis.noTicks&&g.yaxis.ticks==null){g.yaxis.ticks=g.yaxis.noTicks}if(g.grid.coloredAreas){g.grid.markings=g.grid.coloredAreas}if(g.grid.coloredAreasColor){g.grid.markingsColor=g.grid.coloredAreasColor}if(g.lines){C.extend(true,g.series.lines,g.lines)}if(g.points){C.extend(true,g.series.points,g.points)}if(g.bars){C.extend(true,g.series.bars,g.bars)}if(g.shadowSize){g.series.shadowSize=g.shadowSize}for(var AL in L){if(g.hooks[AL]&&g.hooks[AL].length){L[AL]=L[AL].concat(g.hooks[AL])}}Z(L.processOptions,[g])}function f(AK){O=M(AK);U();m()}function M(AN){var AL=[];for(var AK=0;AK<AN.length;++AK){var AM=C.extend(true,{},g.series);if(AN[AK].data){AM.data=AN[AK].data;delete AN[AK].data;C.extend(true,AM,AN[AK]);AN[AK].data=AM.data}else{AM.data=AN[AK]}AL.push(AM)}return AL}function T(AM,AK){var AL=AM[AK];if(!AL||AL==1){return s[AK]}if(typeof AL=="number"){return s[AK.charAt(0)+AL+AK.slice(1)]}return AL}function U(){var AP;var AV=O.length,AK=[],AN=[];for(AP=0;AP<O.length;++AP){var AS=O[AP].color;if(AS!=null){--AV;if(typeof AS=="number"){AN.push(AS)}else{AK.push(C.color.parse(O[AP].color))}}}for(AP=0;AP<AN.length;++AP){AV=Math.max(AV,AN[AP]+1)}var AL=[],AO=0;AP=0;while(AL.length<AV){var AR;if(g.colors.length==AP){AR=C.color.make(100,100,100)}else{AR=C.color.parse(g.colors[AP])}var AM=AO%2==1?-1:1;AR.scale("rgb",1+AM*Math.ceil(AO/2)*0.2);AL.push(AR);++AP;if(AP>=g.colors.length){AP=0;++AO}}var AQ=0,AW;for(AP=0;AP<O.length;++AP){AW=O[AP];if(AW.color==null){AW.color=AL[AQ].toString();++AQ}else{if(typeof AW.color=="number"){AW.color=AL[AW.color].toString()}}if(AW.lines.show==null){var AU,AT=true;for(AU in AW){if(AW[AU].show){AT=false;break}}if(AT){AW.lines.show=true}}AW.xaxis=T(AW,"xaxis");AW.yaxis=T(AW,"yaxis")}}function m(){var AW=Number.POSITIVE_INFINITY,AQ=Number.NEGATIVE_INFINITY,Ac,Aa,AZ,AV,AL,AR,Ab,AX,AP,AO,AK,Ai,Af,AT;for(AK in s){s[AK].datamin=AW;s[AK].datamax=AQ;s[AK].used=false}function AN(Al,Ak,Aj){if(Ak<Al.datamin){Al.datamin=Ak}if(Aj>Al.datamax){Al.datamax=Aj}}for(Ac=0;Ac<O.length;++Ac){AR=O[Ac];AR.datapoints={points:[]};Z(L.processRawData,[AR,AR.data,AR.datapoints])}for(Ac=0;Ac<O.length;++Ac){AR=O[Ac];var Ah=AR.data,Ae=AR.datapoints.format;if(!Ae){Ae=[];Ae.push({x:true,number:true,required:true});Ae.push({y:true,number:true,required:true});if(AR.bars.show){Ae.push({y:true,number:true,required:false,defaultValue:0})}AR.datapoints.format=Ae}if(AR.datapoints.pointsize!=null){continue}if(AR.datapoints.pointsize==null){AR.datapoints.pointsize=Ae.length}AX=AR.datapoints.pointsize;Ab=AR.datapoints.points;insertSteps=AR.lines.show&&AR.lines.steps;AR.xaxis.used=AR.yaxis.used=true;for(Aa=AZ=0;Aa<Ah.length;++Aa,AZ+=AX){AT=Ah[Aa];var AM=AT==null;if(!AM){for(AV=0;AV<AX;++AV){Ai=AT[AV];Af=Ae[AV];if(Af){if(Af.number&&Ai!=null){Ai=+Ai;if(isNaN(Ai)){Ai=null}}if(Ai==null){if(Af.required){AM=true}if(Af.defaultValue!=null){Ai=Af.defaultValue}}}Ab[AZ+AV]=Ai}}if(AM){for(AV=0;AV<AX;++AV){Ai=Ab[AZ+AV];if(Ai!=null){Af=Ae[AV];if(Af.x){AN(AR.xaxis,Ai,Ai)}if(Af.y){AN(AR.yaxis,Ai,Ai)}}Ab[AZ+AV]=null}}else{if(insertSteps&&AZ>0&&Ab[AZ-AX]!=null&&Ab[AZ-AX]!=Ab[AZ]&&Ab[AZ-AX+1]!=Ab[AZ+1]){for(AV=0;AV<AX;++AV){Ab[AZ+AX+AV]=Ab[AZ+AV]}Ab[AZ+1]=Ab[AZ-AX+1];AZ+=AX}}}}for(Ac=0;Ac<O.length;++Ac){AR=O[Ac];Z(L.processDatapoints,[AR,AR.datapoints])}for(Ac=0;Ac<O.length;++Ac){AR=O[Ac];Ab=AR.datapoints.points,AX=AR.datapoints.pointsize;var AS=AW,AY=AW,AU=AQ,Ad=AQ;for(Aa=0;Aa<Ab.length;Aa+=AX){if(Ab[Aa]==null){continue}for(AV=0;AV<AX;++AV){Ai=Ab[Aa+AV];Af=Ae[AV];if(!Af){continue}if(Af.x){if(Ai<AS){AS=Ai}if(Ai>AU){AU=Ai}}if(Af.y){if(Ai<AY){AY=Ai}if(Ai>Ad){Ad=Ai}}}}if(AR.bars.show){var Ag=AR.bars.align=="left"?0:-AR.bars.barWidth/2;if(AR.bars.horizontal){AY+=Ag;Ad+=Ag+AR.bars.barWidth}else{AS+=Ag;AU+=Ag+AR.bars.barWidth}}AN(AR.xaxis,AS,AU);AN(AR.yaxis,AY,Ad)}for(AK in s){if(s[AK].datamin==AW){s[AK].datamin=null}if(s[AK].datamax==AQ){s[AK].datamax=null}}}function c(){function AK(AM,AL){var AN=document.createElement("canvas");AN.width=AM;AN.height=AL;if(C.browser.msie){AN=window.G_vmlCanvasManager.initElement(AN)}return AN}y=l.width();Q=l.height();l.html("");if(l.css("position")=="static"){l.css("position","relative")}if(y<=0||Q<=0){throw"Invalid dimensions for plot, width = "+y+", height = "+Q}if(C.browser.msie){window.G_vmlCanvasManager.init_(document)}P=C(AK(y,Q)).appendTo(l).get(0);Y=P.getContext("2d");AC=C(AK(y,Q)).css({position:"absolute",left:0,top:0}).appendTo(l).get(0);AJ=AC.getContext("2d");AJ.stroke()}function AG(){AD=C([AC,P]);if(g.grid.hoverable){AD.mousemove(D)}if(g.grid.clickable){AD.click(d)}Z(L.bindEvents,[AD])}function k(){function AL(AT,AU){function AP(AV){return AV}var AS,AO,AQ=AU.transform||AP,AR=AU.inverseTransform;if(AT==s.xaxis||AT==s.x2axis){AS=AT.scale=I/(AQ(AT.max)-AQ(AT.min));AO=AQ(AT.min);if(AQ==AP){AT.p2c=function(AV){return(AV-AO)*AS}}else{AT.p2c=function(AV){return(AQ(AV)-AO)*AS}}if(!AR){AT.c2p=function(AV){return AO+AV/AS}}else{AT.c2p=function(AV){return AR(AO+AV/AS)}}}else{AS=AT.scale=t/(AQ(AT.max)-AQ(AT.min));AO=AQ(AT.max);if(AQ==AP){AT.p2c=function(AV){return(AO-AV)*AS}}else{AT.p2c=function(AV){return(AO-AQ(AV))*AS}}if(!AR){AT.c2p=function(AV){return AO-AV/AS}}else{AT.c2p=function(AV){return AR(AO-AV/AS)}}}}function AN(AR,AT){var AQ,AS=[],AP;AR.labelWidth=AT.labelWidth;AR.labelHeight=AT.labelHeight;if(AR==s.xaxis||AR==s.x2axis){if(AR.labelWidth==null){AR.labelWidth=y/(AR.ticks.length>0?AR.ticks.length:1)}if(AR.labelHeight==null){AS=[];for(AQ=0;AQ<AR.ticks.length;++AQ){AP=AR.ticks[AQ].label;if(AP){AS.push('<div class="tickLabel" style="float:left;width:'+AR.labelWidth+'px">'+AP+"</div>")}}if(AS.length>0){var AO=C('<div style="position:absolute;top:-10000px;width:10000px;font-size:smaller">'+AS.join("")+'<div style="clear:left"></div></div>').appendTo(l);AR.labelHeight=AO.height();AO.remove()}}}else{if(AR.labelWidth==null||AR.labelHeight==null){for(AQ=0;AQ<AR.ticks.length;++AQ){AP=AR.ticks[AQ].label;if(AP){AS.push('<div class="tickLabel">'+AP+"</div>")}}if(AS.length>0){var AO=C('<div style="position:absolute;top:-10000px;font-size:smaller">'+AS.join("")+"</div>").appendTo(l);if(AR.labelWidth==null){AR.labelWidth=AO.width()}if(AR.labelHeight==null){AR.labelHeight=AO.find("div").height()}AO.remove()}}}if(AR.labelWidth==null){AR.labelWidth=0}if(AR.labelHeight==null){AR.labelHeight=0}}function AM(){var AP=g.grid.borderWidth;for(i=0;i<O.length;++i){AP=Math.max(AP,2*(O[i].points.radius+O[i].points.lineWidth/2))}e.left=e.right=e.top=e.bottom=AP;var AO=g.grid.labelMargin+g.grid.borderWidth;if(s.xaxis.labelHeight>0){e.bottom=Math.max(AP,s.xaxis.labelHeight+AO)}if(s.yaxis.labelWidth>0){e.left=Math.max(AP,s.yaxis.labelWidth+AO)}if(s.x2axis.labelHeight>0){e.top=Math.max(AP,s.x2axis.labelHeight+AO)}if(s.y2axis.labelWidth>0){e.right=Math.max(AP,s.y2axis.labelWidth+AO)}I=y-e.left-e.right;t=Q-e.bottom-e.top}var AK;for(AK in s){K(s[AK],g[AK])}if(g.grid.show){for(AK in s){F(s[AK],g[AK]);p(s[AK],g[AK]);AN(s[AK],g[AK])}AM()}else{e.left=e.right=e.top=e.bottom=0;I=y;t=Q}for(AK in s){AL(s[AK],g[AK])}if(g.grid.show){h()}AI()}function K(AN,AQ){var AM=+(AQ.min!=null?AQ.min:AN.datamin),AK=+(AQ.max!=null?AQ.max:AN.datamax),AP=AK-AM;if(AP==0){var AL=AK==0?1:0.01;if(AQ.min==null){AM-=AL}if(AQ.max==null||AQ.min!=null){AK+=AL}}else{var AO=AQ.autoscaleMargin;if(AO!=null){if(AQ.min==null){AM-=AP*AO;if(AM<0&&AN.datamin!=null&&AN.datamin>=0){AM=0}}if(AQ.max==null){AK+=AP*AO;if(AK>0&&AN.datamax!=null&&AN.datamax<=0){AK=0}}}}AN.min=AM;AN.max=AK}function F(AP,AS){var AO;if(typeof AS.ticks=="number"&&AS.ticks>0){AO=AS.ticks}else{if(AP==s.xaxis||AP==s.x2axis){AO=0.3*Math.sqrt(y)}else{AO=0.3*Math.sqrt(Q)}}var AX=(AP.max-AP.min)/AO,AZ,AT,AV,AW,AR,AM,AL;if(AS.mode=="time"){var AU={second:1000,minute:60*1000,hour:60*60*1000,day:24*60*60*1000,month:30*24*60*60*1000,year:365.2425*24*60*60*1000};var AY=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var AN=0;if(AS.minTickSize!=null){if(typeof AS.tickSize=="number"){AN=AS.tickSize}else{AN=AS.minTickSize[0]*AU[AS.minTickSize[1]]}}for(AR=0;AR<AY.length-1;++AR){if(AX<(AY[AR][0]*AU[AY[AR][1]]+AY[AR+1][0]*AU[AY[AR+1][1]])/2&&AY[AR][0]*AU[AY[AR][1]]>=AN){break}}AZ=AY[AR][0];AV=AY[AR][1];if(AV=="year"){AM=Math.pow(10,Math.floor(Math.log(AX/AU.year)/Math.LN10));AL=(AX/AU.year)/AM;if(AL<1.5){AZ=1}else{if(AL<3){AZ=2}else{if(AL<7.5){AZ=5}else{AZ=10}}}AZ*=AM}if(AS.tickSize){AZ=AS.tickSize[0];AV=AS.tickSize[1]}AT=function(Ac){var Ah=[],Af=Ac.tickSize[0],Ai=Ac.tickSize[1],Ag=new Date(Ac.min);var Ab=Af*AU[Ai];if(Ai=="second"){Ag.setUTCSeconds(A(Ag.getUTCSeconds(),Af))}if(Ai=="minute"){Ag.setUTCMinutes(A(Ag.getUTCMinutes(),Af))}if(Ai=="hour"){Ag.setUTCHours(A(Ag.getUTCHours(),Af))}if(Ai=="month"){Ag.setUTCMonth(A(Ag.getUTCMonth(),Af))}if(Ai=="year"){Ag.setUTCFullYear(A(Ag.getUTCFullYear(),Af))}Ag.setUTCMilliseconds(0);if(Ab>=AU.minute){Ag.setUTCSeconds(0)}if(Ab>=AU.hour){Ag.setUTCMinutes(0)}if(Ab>=AU.day){Ag.setUTCHours(0)}if(Ab>=AU.day*4){Ag.setUTCDate(1)}if(Ab>=AU.year){Ag.setUTCMonth(0)}var Ak=0,Aj=Number.NaN,Ad;do{Ad=Aj;Aj=Ag.getTime();Ah.push({v:Aj,label:Ac.tickFormatter(Aj,Ac)});if(Ai=="month"){if(Af<1){Ag.setUTCDate(1);var Aa=Ag.getTime();Ag.setUTCMonth(Ag.getUTCMonth()+1);var Ae=Ag.getTime();Ag.setTime(Aj+Ak*AU.hour+(Ae-Aa)*Af);Ak=Ag.getUTCHours();Ag.setUTCHours(0)}else{Ag.setUTCMonth(Ag.getUTCMonth()+Af)}}else{if(Ai=="year"){Ag.setUTCFullYear(Ag.getUTCFullYear()+Af)}else{Ag.setTime(Aj+Ab)}}}while(Aj<Ac.max&&Aj!=Ad);return Ah};AW=function(Aa,Ad){var Af=new Date(Aa);if(AS.timeformat!=null){return C.plot.formatDate(Af,AS.timeformat,AS.monthNames)}var Ab=Ad.tickSize[0]*AU[Ad.tickSize[1]];var Ac=Ad.max-Ad.min;var Ae=(AS.twelveHourClock)?" %p":"";if(Ab<AU.minute){fmt="%h:%M:%S"+Ae}else{if(Ab<AU.day){if(Ac<2*AU.day){fmt="%h:%M"+Ae}else{fmt="%b %d %h:%M"+Ae}}else{if(Ab<AU.month){fmt="%b %d"}else{if(Ab<AU.year){if(Ac<AU.year){fmt="%b"}else{fmt="%b %y"}}else{fmt="%y"}}}}return C.plot.formatDate(Af,fmt,AS.monthNames)}}else{var AK=AS.tickDecimals;var AQ=-Math.floor(Math.log(AX)/Math.LN10);if(AK!=null&&AQ>AK){AQ=AK}AM=Math.pow(10,-AQ);AL=AX/AM;if(AL<1.5){AZ=1}else{if(AL<3){AZ=2;if(AL>2.25&&(AK==null||AQ+1<=AK)){AZ=2.5;++AQ}}else{if(AL<7.5){AZ=5}else{AZ=10}}}AZ*=AM;if(AS.minTickSize!=null&&AZ<AS.minTickSize){AZ=AS.minTickSize}if(AS.tickSize!=null){AZ=AS.tickSize}AP.tickDecimals=Math.max(0,(AK!=null)?AK:AQ);AT=function(Ac){var Ae=[];var Af=A(Ac.min,Ac.tickSize),Ab=0,Aa=Number.NaN,Ad;do{Ad=Aa;Aa=Af+Ab*Ac.tickSize;Ae.push({v:Aa,label:Ac.tickFormatter(Aa,Ac)});++Ab}while(Aa<Ac.max&&Aa!=Ad);return Ae};AW=function(Aa,Ab){return Aa.toFixed(Ab.tickDecimals)}}AP.tickSize=AV?[AZ,AV]:AZ;AP.tickGenerator=AT;if(C.isFunction(AS.tickFormatter)){AP.tickFormatter=function(Aa,Ab){return""+AS.tickFormatter(Aa,Ab)}}else{AP.tickFormatter=AW}}function p(AO,AQ){AO.ticks=[];if(!AO.used){return }if(AQ.ticks==null){AO.ticks=AO.tickGenerator(AO)}else{if(typeof AQ.ticks=="number"){if(AQ.ticks>0){AO.ticks=AO.tickGenerator(AO)}}else{if(AQ.ticks){var AP=AQ.ticks;if(C.isFunction(AP)){AP=AP({min:AO.min,max:AO.max})}var AN,AK;for(AN=0;AN<AP.length;++AN){var AL=null;var AM=AP[AN];if(typeof AM=="object"){AK=AM[0];if(AM.length>1){AL=AM[1]}}else{AK=AM}if(AL==null){AL=AO.tickFormatter(AK,AO)}AO.ticks[AN]={v:AK,label:AL}}}}}if(AQ.autoscaleMargin!=null&&AO.ticks.length>0){if(AQ.min==null){AO.min=Math.min(AO.min,AO.ticks[0].v)}if(AQ.max==null&&AO.ticks.length>1){AO.max=Math.max(AO.max,AO.ticks[AO.ticks.length-1].v)}}}function AH(){Y.clearRect(0,0,y,Q);var AL=g.grid;if(AL.show&&!AL.aboveData){S()}for(var AK=0;AK<O.length;++AK){AA(O[AK])}Z(L.draw,[Y]);if(AL.show&&AL.aboveData){S()}}function N(AL,AR){var AO=AR+"axis",AK=AR+"2axis",AN,AQ,AP,AM;if(AL[AO]){AN=s[AO];AQ=AL[AO].from;AP=AL[AO].to}else{if(AL[AK]){AN=s[AK];AQ=AL[AK].from;AP=AL[AK].to}else{AN=s[AO];AQ=AL[AR+"1"];AP=AL[AR+"2"]}}if(AQ!=null&&AP!=null&&AQ>AP){return{from:AP,to:AQ,axis:AN}}return{from:AQ,to:AP,axis:AN}}function S(){var AO;Y.save();Y.translate(e.left,e.top);if(g.grid.backgroundColor){Y.fillStyle=R(g.grid.backgroundColor,t,0,"rgba(255, 255, 255, 0)");Y.fillRect(0,0,I,t)}var AL=g.grid.markings;if(AL){if(C.isFunction(AL)){AL=AL({xmin:s.xaxis.min,xmax:s.xaxis.max,ymin:s.yaxis.min,ymax:s.yaxis.max,xaxis:s.xaxis,yaxis:s.yaxis,x2axis:s.x2axis,y2axis:s.y2axis})}for(AO=0;AO<AL.length;++AO){var AK=AL[AO],AQ=N(AK,"x"),AN=N(AK,"y");if(AQ.from==null){AQ.from=AQ.axis.min}if(AQ.to==null){AQ.to=AQ.axis.max}if(AN.from==null){AN.from=AN.axis.min}if(AN.to==null){AN.to=AN.axis.max}if(AQ.to<AQ.axis.min||AQ.from>AQ.axis.max||AN.to<AN.axis.min||AN.from>AN.axis.max){continue}AQ.from=Math.max(AQ.from,AQ.axis.min);AQ.to=Math.min(AQ.to,AQ.axis.max);AN.from=Math.max(AN.from,AN.axis.min);AN.to=Math.min(AN.to,AN.axis.max);if(AQ.from==AQ.to&&AN.from==AN.to){continue}AQ.from=AQ.axis.p2c(AQ.from);AQ.to=AQ.axis.p2c(AQ.to);AN.from=AN.axis.p2c(AN.from);AN.to=AN.axis.p2c(AN.to);if(AQ.from==AQ.to||AN.from==AN.to){Y.beginPath();Y.strokeStyle=AK.color||g.grid.markingsColor;Y.lineWidth=AK.lineWidth||g.grid.markingsLineWidth;Y.moveTo(AQ.from,AN.from);Y.lineTo(AQ.to,AN.to);Y.stroke()}else{Y.fillStyle=AK.color||g.grid.markingsColor;Y.fillRect(AQ.from,AN.to,AQ.to-AQ.from,AN.from-AN.to)}}}Y.lineWidth=1;Y.strokeStyle=g.grid.tickColor;Y.beginPath();var AM,AP=s.xaxis;for(AO=0;AO<AP.ticks.length;++AO){AM=AP.ticks[AO].v;if(AM<=AP.min||AM>=s.xaxis.max){continue}Y.moveTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,0);Y.lineTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,t)}AP=s.yaxis;for(AO=0;AO<AP.ticks.length;++AO){AM=AP.ticks[AO].v;if(AM<=AP.min||AM>=AP.max){continue}Y.moveTo(0,Math.floor(AP.p2c(AM))+Y.lineWidth/2);Y.lineTo(I,Math.floor(AP.p2c(AM))+Y.lineWidth/2)}AP=s.x2axis;for(AO=0;AO<AP.ticks.length;++AO){AM=AP.ticks[AO].v;if(AM<=AP.min||AM>=AP.max){continue}Y.moveTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,-5);Y.lineTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,5)}AP=s.y2axis;for(AO=0;AO<AP.ticks.length;++AO){AM=AP.ticks[AO].v;if(AM<=AP.min||AM>=AP.max){continue}Y.moveTo(I-5,Math.floor(AP.p2c(AM))+Y.lineWidth/2);Y.lineTo(I+5,Math.floor(AP.p2c(AM))+Y.lineWidth/2)}Y.stroke();if(g.grid.borderWidth){var AR=g.grid.borderWidth;Y.lineWidth=AR;Y.strokeStyle=g.grid.borderColor;Y.strokeRect(-AR/2,-AR/2,I+AR,t+AR)}Y.restore()}function h(){l.find(".tickLabels").remove();var AK=['<div class="tickLabels" style="font-size:smaller;color:'+g.grid.color+'">'];function AM(AP,AQ){for(var AO=0;AO<AP.ticks.length;++AO){var AN=AP.ticks[AO];if(!AN.label||AN.v<AP.min||AN.v>AP.max){continue}AK.push(AQ(AN,AP))}}var AL=g.grid.labelMargin+g.grid.borderWidth;AM(s.xaxis,function(AN,AO){return'<div style="position:absolute;top:'+(e.top+t+AL)+"px;left:"+Math.round(e.left+AO.p2c(AN.v)-AO.labelWidth/2)+"px;width:"+AO.labelWidth+'px;text-align:center" class="tickLabel">'+AN.label+"</div>"});AM(s.yaxis,function(AN,AO){return'<div style="position:absolute;top:'+Math.round(e.top+AO.p2c(AN.v)-AO.labelHeight/2)+"px;right:"+(e.right+I+AL)+"px;width:"+AO.labelWidth+'px;text-align:right" class="tickLabel">'+AN.label+"</div>"});AM(s.x2axis,function(AN,AO){return'<div style="position:absolute;bottom:'+(e.bottom+t+AL)+"px;left:"+Math.round(e.left+AO.p2c(AN.v)-AO.labelWidth/2)+"px;width:"+AO.labelWidth+'px;text-align:center" class="tickLabel">'+AN.label+"</div>"});AM(s.y2axis,function(AN,AO){return'<div style="position:absolute;top:'+Math.round(e.top+AO.p2c(AN.v)-AO.labelHeight/2)+"px;left:"+(e.left+I+AL)+"px;width:"+AO.labelWidth+'px;text-align:left" class="tickLabel">'+AN.label+"</div>"});AK.push("</div>");l.append(AK.join(""))}function AA(AK){if(AK.lines.show){a(AK)}if(AK.bars.show){n(AK)}if(AK.points.show){o(AK)}}function a(AN){function AM(AY,AZ,AR,Ad,Ac){var Ae=AY.points,AS=AY.pointsize,AW=null,AV=null;Y.beginPath();for(var AX=AS;AX<Ae.length;AX+=AS){var AU=Ae[AX-AS],Ab=Ae[AX-AS+1],AT=Ae[AX],Aa=Ae[AX+1];if(AU==null||AT==null){continue}if(Ab<=Aa&&Ab<Ac.min){if(Aa<Ac.min){continue}AU=(Ac.min-Ab)/(Aa-Ab)*(AT-AU)+AU;Ab=Ac.min}else{if(Aa<=Ab&&Aa<Ac.min){if(Ab<Ac.min){continue}AT=(Ac.min-Ab)/(Aa-Ab)*(AT-AU)+AU;Aa=Ac.min}}if(Ab>=Aa&&Ab>Ac.max){if(Aa>Ac.max){continue}AU=(Ac.max-Ab)/(Aa-Ab)*(AT-AU)+AU;Ab=Ac.max}else{if(Aa>=Ab&&Aa>Ac.max){if(Ab>Ac.max){continue}AT=(Ac.max-Ab)/(Aa-Ab)*(AT-AU)+AU;Aa=Ac.max}}if(AU<=AT&&AU<Ad.min){if(AT<Ad.min){continue}Ab=(Ad.min-AU)/(AT-AU)*(Aa-Ab)+Ab;AU=Ad.min}else{if(AT<=AU&&AT<Ad.min){if(AU<Ad.min){continue}Aa=(Ad.min-AU)/(AT-AU)*(Aa-Ab)+Ab;AT=Ad.min}}if(AU>=AT&&AU>Ad.max){if(AT>Ad.max){continue}Ab=(Ad.max-AU)/(AT-AU)*(Aa-Ab)+Ab;AU=Ad.max}else{if(AT>=AU&&AT>Ad.max){if(AU>Ad.max){continue}Aa=(Ad.max-AU)/(AT-AU)*(Aa-Ab)+Ab;AT=Ad.max}}if(AU!=AW||Ab!=AV){Y.moveTo(Ad.p2c(AU)+AZ,Ac.p2c(Ab)+AR)}AW=AT;AV=Aa;Y.lineTo(Ad.p2c(AT)+AZ,Ac.p2c(Aa)+AR)}Y.stroke()}function AO(AX,Ae,Ac){var Af=AX.points,AR=AX.pointsize,AS=Math.min(Math.max(0,Ac.min),Ac.max),Aa,AV=0,Ad=false;for(var AW=AR;AW<Af.length;AW+=AR){var AU=Af[AW-AR],Ab=Af[AW-AR+1],AT=Af[AW],AZ=Af[AW+1];if(Ad&&AU!=null&&AT==null){Y.lineTo(Ae.p2c(AV),Ac.p2c(AS));Y.fill();Ad=false;continue}if(AU==null||AT==null){continue}if(AU<=AT&&AU<Ae.min){if(AT<Ae.min){continue}Ab=(Ae.min-AU)/(AT-AU)*(AZ-Ab)+Ab;AU=Ae.min}else{if(AT<=AU&&AT<Ae.min){if(AU<Ae.min){continue}AZ=(Ae.min-AU)/(AT-AU)*(AZ-Ab)+Ab;AT=Ae.min}}if(AU>=AT&&AU>Ae.max){if(AT>Ae.max){continue}Ab=(Ae.max-AU)/(AT-AU)*(AZ-Ab)+Ab;AU=Ae.max}else{if(AT>=AU&&AT>Ae.max){if(AU>Ae.max){continue}AZ=(Ae.max-AU)/(AT-AU)*(AZ-Ab)+Ab;AT=Ae.max}}if(!Ad){Y.beginPath();Y.moveTo(Ae.p2c(AU),Ac.p2c(AS));Ad=true}if(Ab>=Ac.max&&AZ>=Ac.max){Y.lineTo(Ae.p2c(AU),Ac.p2c(Ac.max));Y.lineTo(Ae.p2c(AT),Ac.p2c(Ac.max));AV=AT;continue}else{if(Ab<=Ac.min&&AZ<=Ac.min){Y.lineTo(Ae.p2c(AU),Ac.p2c(Ac.min));Y.lineTo(Ae.p2c(AT),Ac.p2c(Ac.min));AV=AT;continue}}var Ag=AU,AY=AT;if(Ab<=AZ&&Ab<Ac.min&&AZ>=Ac.min){AU=(Ac.min-Ab)/(AZ-Ab)*(AT-AU)+AU;Ab=Ac.min}else{if(AZ<=Ab&&AZ<Ac.min&&Ab>=Ac.min){AT=(Ac.min-Ab)/(AZ-Ab)*(AT-AU)+AU;AZ=Ac.min}}if(Ab>=AZ&&Ab>Ac.max&&AZ<=Ac.max){AU=(Ac.max-Ab)/(AZ-Ab)*(AT-AU)+AU;Ab=Ac.max}else{if(AZ>=Ab&&AZ>Ac.max&&Ab<=Ac.max){AT=(Ac.max-Ab)/(AZ-Ab)*(AT-AU)+AU;AZ=Ac.max}}if(AU!=Ag){if(Ab<=Ac.min){Aa=Ac.min}else{Aa=Ac.max}Y.lineTo(Ae.p2c(Ag),Ac.p2c(Aa));Y.lineTo(Ae.p2c(AU),Ac.p2c(Aa))}Y.lineTo(Ae.p2c(AU),Ac.p2c(Ab));Y.lineTo(Ae.p2c(AT),Ac.p2c(AZ));if(AT!=AY){if(AZ<=Ac.min){Aa=Ac.min}else{Aa=Ac.max}Y.lineTo(Ae.p2c(AT),Ac.p2c(Aa));Y.lineTo(Ae.p2c(AY),Ac.p2c(Aa))}AV=Math.max(AT,AY)}if(Ad){Y.lineTo(Ae.p2c(AV),Ac.p2c(AS));Y.fill()}}Y.save();Y.translate(e.left,e.top);Y.lineJoin="round";var AP=AN.lines.lineWidth,AK=AN.shadowSize;if(AP>0&&AK>0){Y.lineWidth=AK;Y.strokeStyle="rgba(0,0,0,0.1)";var AQ=Math.PI/18;AM(AN.datapoints,Math.sin(AQ)*(AP/2+AK/2),Math.cos(AQ)*(AP/2+AK/2),AN.xaxis,AN.yaxis);Y.lineWidth=AK/2;AM(AN.datapoints,Math.sin(AQ)*(AP/2+AK/4),Math.cos(AQ)*(AP/2+AK/4),AN.xaxis,AN.yaxis)}Y.lineWidth=AP;Y.strokeStyle=AN.color;var AL=V(AN.lines,AN.color,0,t);if(AL){Y.fillStyle=AL;AO(AN.datapoints,AN.xaxis,AN.yaxis)}if(AP>0){AM(AN.datapoints,0,0,AN.xaxis,AN.yaxis)}Y.restore()}function o(AN){function AP(AU,AT,Ab,AR,AV,AZ,AY){var Aa=AU.points,AQ=AU.pointsize;for(var AS=0;AS<Aa.length;AS+=AQ){var AX=Aa[AS],AW=Aa[AS+1];if(AX==null||AX<AZ.min||AX>AZ.max||AW<AY.min||AW>AY.max){continue}Y.beginPath();Y.arc(AZ.p2c(AX),AY.p2c(AW)+AR,AT,0,AV,false);if(Ab){Y.fillStyle=Ab;Y.fill()}Y.stroke()}}Y.save();Y.translate(e.left,e.top);var AO=AN.lines.lineWidth,AL=AN.shadowSize,AK=AN.points.radius;if(AO>0&&AL>0){var AM=AL/2;Y.lineWidth=AM;Y.strokeStyle="rgba(0,0,0,0.1)";AP(AN.datapoints,AK,null,AM+AM/2,Math.PI,AN.xaxis,AN.yaxis);Y.strokeStyle="rgba(0,0,0,0.2)";AP(AN.datapoints,AK,null,AM/2,Math.PI,AN.xaxis,AN.yaxis)}Y.lineWidth=AO;Y.strokeStyle=AN.color;AP(AN.datapoints,AK,V(AN.points,AN.color),0,2*Math.PI,AN.xaxis,AN.yaxis);Y.restore()}function AB(AV,AU,Ad,AQ,AY,AN,AL,AT,AS,Ac,AZ){var AM,Ab,AR,AX,AO,AK,AW,AP,Aa;if(AZ){AP=AK=AW=true;AO=false;AM=Ad;Ab=AV;AX=AU+AQ;AR=AU+AY;if(Ab<AM){Aa=Ab;Ab=AM;AM=Aa;AO=true;AK=false}}else{AO=AK=AW=true;AP=false;AM=AV+AQ;Ab=AV+AY;AR=Ad;AX=AU;if(AX<AR){Aa=AX;AX=AR;AR=Aa;AP=true;AW=false}}if(Ab<AT.min||AM>AT.max||AX<AS.min||AR>AS.max){return }if(AM<AT.min){AM=AT.min;AO=false}if(Ab>AT.max){Ab=AT.max;AK=false}if(AR<AS.min){AR=AS.min;AP=false}if(AX>AS.max){AX=AS.max;AW=false}AM=AT.p2c(AM);AR=AS.p2c(AR);Ab=AT.p2c(Ab);AX=AS.p2c(AX);if(AL){Ac.beginPath();Ac.moveTo(AM,AR);Ac.lineTo(AM,AX);Ac.lineTo(Ab,AX);Ac.lineTo(Ab,AR);Ac.fillStyle=AL(AR,AX);Ac.fill()}if(AO||AK||AW||AP){Ac.beginPath();Ac.moveTo(AM,AR+AN);if(AO){Ac.lineTo(AM,AX+AN)}else{Ac.moveTo(AM,AX+AN)}if(AW){Ac.lineTo(Ab,AX+AN)}else{Ac.moveTo(Ab,AX+AN)}if(AK){Ac.lineTo(Ab,AR+AN)}else{Ac.moveTo(Ab,AR+AN)}if(AP){Ac.lineTo(AM,AR+AN)}else{Ac.moveTo(AM,AR+AN)}Ac.stroke()}}function n(AM){function AL(AS,AR,AU,AP,AT,AW,AV){var AX=AS.points,AO=AS.pointsize;for(var AQ=0;AQ<AX.length;AQ+=AO){if(AX[AQ]==null){continue}AB(AX[AQ],AX[AQ+1],AX[AQ+2],AR,AU,AP,AT,AW,AV,Y,AM.bars.horizontal)}}Y.save();Y.translate(e.left,e.top);Y.lineWidth=AM.bars.lineWidth;Y.strokeStyle=AM.color;var AK=AM.bars.align=="left"?0:-AM.bars.barWidth/2;var AN=AM.bars.fill?function(AO,AP){return V(AM.bars,AM.color,AO,AP)}:null;AL(AM.datapoints,AK,AK+AM.bars.barWidth,0,AN,AM.xaxis,AM.yaxis);Y.restore()}function V(AM,AK,AL,AO){var AN=AM.fill;if(!AN){return null}if(AM.fillColor){return R(AM.fillColor,AL,AO,AK)}var AP=C.color.parse(AK);AP.a=typeof AN=="number"?AN:0.4;AP.normalize();return AP.toString()}function AI(){l.find(".legend").remove();if(!g.legend.show){return }var AP=[],AN=false,AV=g.legend.labelFormatter,AU,AR;for(i=0;i<O.length;++i){AU=O[i];AR=AU.label;if(!AR){continue}if(i%g.legend.noColumns==0){if(AN){AP.push("</tr>")}AP.push("<tr>");AN=true}if(AV){AR=AV(AR,AU)}AP.push('<td class="legendColorBox"><div style="border:1px solid '+g.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+AU.color+';overflow:hidden"></div></div></td><td class="legendLabel">'+AR+"</td>")}if(AN){AP.push("</tr>")}if(AP.length==0){return }var AT='<table style="font-size:smaller;color:'+g.grid.color+'">'+AP.join("")+"</table>";if(g.legend.container!=null){C(g.legend.container).html(AT)}else{var AQ="",AL=g.legend.position,AM=g.legend.margin;if(AM[0]==null){AM=[AM,AM]}if(AL.charAt(0)=="n"){AQ+="top:"+(AM[1]+e.top)+"px;"}else{if(AL.charAt(0)=="s"){AQ+="bottom:"+(AM[1]+e.bottom)+"px;"}}if(AL.charAt(1)=="e"){AQ+="right:"+(AM[0]+e.right)+"px;"}else{if(AL.charAt(1)=="w"){AQ+="left:"+(AM[0]+e.left)+"px;"}}var AS=C('<div class="legend">'+AT.replace('style="','style="position:absolute;'+AQ+";")+"</div>").appendTo(l);if(g.legend.backgroundOpacity!=0){var AO=g.legend.backgroundColor;if(AO==null){AO=g.grid.backgroundColor;if(AO&&typeof AO=="string"){AO=C.color.parse(AO)}else{AO=C.color.extract(AS,"background-color")}AO.a=1;AO=AO.toString()}var AK=AS.children();C('<div style="position:absolute;width:'+AK.width()+"px;height:"+AK.height()+"px;"+AQ+"background-color:"+AO+';"> </div>').prependTo(AS).css("opacity",g.legend.backgroundOpacity)}}}var w=[],J=null;function AF(AR,AP,AM){var AX=g.grid.mouseActiveRadius,Aj=AX*AX+1,Ah=null,Aa=false,Af,Ad;for(Af=0;Af<O.length;++Af){if(!AM(O[Af])){continue}var AY=O[Af],AQ=AY.xaxis,AO=AY.yaxis,Ae=AY.datapoints.points,Ac=AY.datapoints.pointsize,AZ=AQ.c2p(AR),AW=AO.c2p(AP),AL=AX/AQ.scale,AK=AX/AO.scale;if(AY.lines.show||AY.points.show){for(Ad=0;Ad<Ae.length;Ad+=Ac){var AT=Ae[Ad],AS=Ae[Ad+1];if(AT==null){continue}if(AT-AZ>AL||AT-AZ<-AL||AS-AW>AK||AS-AW<-AK){continue}var AV=Math.abs(AQ.p2c(AT)-AR),AU=Math.abs(AO.p2c(AS)-AP),Ab=AV*AV+AU*AU;if(Ab<=Aj){Aj=Ab;Ah=[Af,Ad/Ac]}}}if(AY.bars.show&&!Ah){var AN=AY.bars.align=="left"?0:-AY.bars.barWidth/2,Ag=AN+AY.bars.barWidth;for(Ad=0;Ad<Ae.length;Ad+=Ac){var AT=Ae[Ad],AS=Ae[Ad+1],Ai=Ae[Ad+2];if(AT==null){continue}if(O[Af].bars.horizontal?(AZ<=Math.max(Ai,AT)&&AZ>=Math.min(Ai,AT)&&AW>=AS+AN&&AW<=AS+Ag):(AZ>=AT+AN&&AZ<=AT+Ag&&AW>=Math.min(Ai,AS)&&AW<=Math.max(Ai,AS))){Ah=[Af,Ad/Ac]}}}}if(Ah){Af=Ah[0];Ad=Ah[1];Ac=O[Af].datapoints.pointsize;return{datapoint:O[Af].datapoints.points.slice(Ad*Ac,(Ad+1)*Ac),dataIndex:Ad,series:O[Af],seriesIndex:Af}}return null}function D(AK){if(g.grid.hoverable){H("plothover",AK,function(AL){return AL.hoverable!=false})}}function d(AK){H("plotclick",AK,function(AL){return AL.clickable!=false})}function H(AL,AK,AM){var AN=AD.offset(),AS={pageX:AK.pageX,pageY:AK.pageY},AQ=AK.pageX-AN.left-e.left,AO=AK.pageY-AN.top-e.top;if(s.xaxis.used){AS.x=s.xaxis.c2p(AQ)}if(s.yaxis.used){AS.y=s.yaxis.c2p(AO)}if(s.x2axis.used){AS.x2=s.x2axis.c2p(AQ)}if(s.y2axis.used){AS.y2=s.y2axis.c2p(AO)}var AT=AF(AQ,AO,AM);if(AT){AT.pageX=parseInt(AT.series.xaxis.p2c(AT.datapoint[0])+AN.left+e.left);AT.pageY=parseInt(AT.series.yaxis.p2c(AT.datapoint[1])+AN.top+e.top)}if(g.grid.autoHighlight){for(var AP=0;AP<w.length;++AP){var AR=w[AP];if(AR.auto==AL&&!(AT&&AR.series==AT.series&&AR.point==AT.datapoint)){x(AR.series,AR.point)}}if(AT){AE(AT.series,AT.datapoint,AL)}}l.trigger(AL,[AS,AT])}function q(){if(!J){J=setTimeout(v,30)}}function v(){J=null;AJ.save();AJ.clearRect(0,0,y,Q);AJ.translate(e.left,e.top);var AL,AK;for(AL=0;AL<w.length;++AL){AK=w[AL];if(AK.series.bars.show){z(AK.series,AK.point)}else{u(AK.series,AK.point)}}AJ.restore();Z(L.drawOverlay,[AJ])}function AE(AM,AK,AN){if(typeof AM=="number"){AM=O[AM]}if(typeof AK=="number"){AK=AM.data[AK]}var AL=j(AM,AK);if(AL==-1){w.push({series:AM,point:AK,auto:AN});q()}else{if(!AN){w[AL].auto=false}}}function x(AM,AK){if(AM==null&&AK==null){w=[];q()}if(typeof AM=="number"){AM=O[AM]}if(typeof AK=="number"){AK=AM.data[AK]}var AL=j(AM,AK);if(AL!=-1){w.splice(AL,1);q()}}function j(AM,AN){for(var AK=0;AK<w.length;++AK){var AL=w[AK];if(AL.series==AM&&AL.point[0]==AN[0]&&AL.point[1]==AN[1]){return AK}}return -1}function u(AN,AM){var AL=AM[0],AR=AM[1],AQ=AN.xaxis,AP=AN.yaxis;if(AL<AQ.min||AL>AQ.max||AR<AP.min||AR>AP.max){return }var AO=AN.points.radius+AN.points.lineWidth/2;AJ.lineWidth=AO;AJ.strokeStyle=C.color.parse(AN.color).scale("a",0.5).toString();var AK=1.5*AO;AJ.beginPath();AJ.arc(AQ.p2c(AL),AP.p2c(AR),AK,0,2*Math.PI,false);AJ.stroke()}function z(AN,AK){AJ.lineWidth=AN.bars.lineWidth;AJ.strokeStyle=C.color.parse(AN.color).scale("a",0.5).toString();var AM=C.color.parse(AN.color).scale("a",0.5).toString();var AL=AN.bars.align=="left"?0:-AN.bars.barWidth/2;AB(AK[0],AK[1],AK[2]||0,AL,AL+AN.bars.barWidth,0,function(){return AM},AN.xaxis,AN.yaxis,AJ,AN.bars.horizontal)}function R(AM,AL,AQ,AO){if(typeof AM=="string"){return AM}else{var AP=Y.createLinearGradient(0,AQ,0,AL);for(var AN=0,AK=AM.colors.length;AN<AK;++AN){var AR=AM.colors[AN];if(typeof AR!="string"){AR=C.color.parse(AO).scale("rgb",AR.brightness);AR.a*=AR.opacity;AR=AR.toString()}AP.addColorStop(AN/(AK-1),AR)}return AP}}}C.plot=function(G,E,D){var F=new B(C(G),E,D,C.plot.plugins);return F};C.plot.plugins=[];C.plot.formatDate=function(H,E,G){var L=function(N){N=""+N;return N.length==1?"0"+N:N};var D=[];var M=false;var K=H.getUTCHours();var I=K<12;if(G==null){G=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(E.search(/%p|%P/)!=-1){if(K>12){K=K-12}else{if(K==0){K=12}}}for(var F=0;F<E.length;++F){var J=E.charAt(F);if(M){switch(J){case"h":J=""+K;break;case"H":J=L(K);break;case"M":J=L(H.getUTCMinutes());break;case"S":J=L(H.getUTCSeconds());break;case"d":J=""+H.getUTCDate();break;case"m":J=""+(H.getUTCMonth()+1);break;case"y":J=""+H.getUTCFullYear();break;case"b":J=""+G[H.getUTCMonth()];break;case"p":J=(I)?("am"):("pm");break;case"P":J=(I)?("AM"):("PM");break}D.push(J);M=false}else{if(J=="%"){M=true}else{D.push(J)}}}return D.join("")};function A(E,D){return D*Math.floor(E/D)}})(jQuery); \ No newline at end of file
diff --git a/askbot/skins/old/media/js/jquery.form.js b/askbot/skins/old/media/js/jquery.form.js
new file mode 100644
index 00000000..443114fd
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.form.js
@@ -0,0 +1,654 @@
+/*
+ * jQuery Form Plugin
+ * version: 2.33 (22-SEP-2009)
+ * @requires jQuery v1.2.6 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+;(function($) {
+
+/*
+ Usage Note:
+ -----------
+ Do not use both ajaxSubmit and ajaxForm on the same form. These
+ functions are intended to be exclusive. Use ajaxSubmit if you want
+ to bind your own submit handler to the form. For example,
+
+ $(document).ready(function() {
+ $('#myForm').bind('submit', function() {
+ $(this).ajaxSubmit({
+ target: '#output'
+ });
+ return false; // <-- important!
+ });
+ });
+
+ Use ajaxForm when you want the plugin to manage all the event binding
+ for you. For example,
+
+ $(document).ready(function() {
+ $('#myForm').ajaxForm({
+ target: '#output'
+ });
+ });
+
+ When using ajaxForm, the ajaxSubmit function will be invoked for you
+ at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+ if (!this.length) {
+ log('ajaxSubmit: skipping submit process - no element selected');
+ return this;
+ }
+
+ if (typeof options == 'function')
+ options = { success: options };
+
+ var url = $.trim(this.attr('action'));
+ if (url) {
+ // clean url (don't include hash vaue)
+ url = (url.match(/^([^#]+)/)||[])[1];
+ }
+ url = url || window.location.href || '';
+
+ options = $.extend({
+ url: url,
+ type: this.attr('method') || 'GET'
+ }, options || {});
+
+ // hook for manipulating the form data before it is extracted;
+ // convenient for use with rich editors like tinyMCE or FCKEditor
+ var veto = {};
+ this.trigger('form-pre-serialize', [this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+ return this;
+ }
+
+ // provide opportunity to alter form data before it is serialized
+ if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSerialize callback');
+ return this;
+ }
+
+ var a = this.formToArray(options.semantic);
+ if (options.data) {
+ options.extraData = options.data;
+ for (var n in options.data) {
+ if(options.data[n] instanceof Array) {
+ for (var k in options.data[n])
+ a.push( { name: n, value: options.data[n][k] } );
+ }
+ else
+ a.push( { name: n, value: options.data[n] } );
+ }
+ }
+
+ // give pre-submit callback an opportunity to abort the submit
+ if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSubmit callback');
+ return this;
+ }
+
+ // fire vetoable 'validate' event
+ this.trigger('form-submit-validate', [a, this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+ return this;
+ }
+
+ var q = $.param(a);
+
+ if (options.type.toUpperCase() == 'GET') {
+ options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+ options.data = null; // data is null for 'get'
+ }
+ else
+ options.data = q; // data is the query string for 'post'
+
+ var $form = this, callbacks = [];
+ if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
+ if (options.clearForm) callbacks.push(function() { $form.clearForm(); });
+
+ // perform a load on the target only if dataType is not provided
+ if (!options.dataType && options.target) {
+ var oldSuccess = options.success || function(){};
+ callbacks.push(function(data) {
+ $(options.target).html(data).each(oldSuccess, arguments);
+ });
+ }
+ else if (options.success)
+ callbacks.push(options.success);
+
+ options.success = function(data, status) {
+ for (var i=0, max=callbacks.length; i < max; i++)
+ callbacks[i].apply(options, [data, status, $form]);
+ };
+
+ // are there files to upload?
+ var files = $('input:file', this).fieldValue();
+ var found = false;
+ for (var j=0; j < files.length; j++)
+ if (files[j])
+ found = true;
+
+ var multipart = false;
+// var mp = 'multipart/form-data';
+// multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+ // options.iframe allows user to force iframe mode
+ if (options.iframe || found || multipart) {
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+ if (options.closeKeepAlive)
+ $.get(options.closeKeepAlive, fileUpload);
+ else
+ fileUpload();
+ }
+ else{
+ $.ajax(options);
+ }
+
+ // fire 'notify' event
+ this.trigger('form-submit-notify', [this, options]);
+ return this;
+
+
+ // private function for handling file uploads (hat tip to YAHOO!)
+ function fileUpload() {
+ var form = $form[0];
+
+ if ($(':input[name=submit]', form).length) {
+ alert('Error: Form elements must not be named "submit".');
+ return;
+ }
+
+ var opts = $.extend({}, $.ajaxSettings, options);
+ var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);
+
+ var id = 'jqFormIO' + (new Date().getTime());
+ var $io = $('<iframe id="' + id + '" name="' + id + '" src="about:blank" />');
+ var io = $io[0];
+
+ $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+ var xhr = { // mock object
+ aborted: 0,
+ responseText: null,
+ responseXML: null,
+ status: 0,
+ statusText: 'n/a',
+ getAllResponseHeaders: function() {},
+ getResponseHeader: function() {},
+ setRequestHeader: function() {},
+ abort: function() {
+ this.aborted = 1;
+ $io.attr('src','about:blank'); // abort op in progress
+ }
+ };
+
+ var g = opts.global;
+ // trigger ajax global events so that activity/block indicators work like normal
+ if (g && ! $.active++) $.event.trigger("ajaxStart");
+ if (g) $.event.trigger("ajaxSend", [xhr, opts]);
+
+ if (s.beforeSend && s.beforeSend(xhr, s) === false) {
+ s.global && $.active--;
+ return;
+ }
+ if (xhr.aborted)
+ return;
+
+ var cbInvoked = 0;
+ var timedOut = 0;
+
+ // add submitting element to data if we know it
+ var sub = form.clk;
+ if (sub) {
+ var n = sub.name;
+ if (n && !sub.disabled) {
+ options.extraData = options.extraData || {};
+ options.extraData[n] = sub.value;
+ if (sub.type == "image") {
+ options.extraData[name+'.x'] = form.clk_x;
+ options.extraData[name+'.y'] = form.clk_y;
+ }
+ }
+ }
+
+ // take a breath so that pending repaints get some cpu time before the upload starts
+ setTimeout(function() {
+ // make sure form attrs are set
+ var t = $form.attr('target'), a = $form.attr('action');
+
+ // update form attrs in IE friendly way
+ form.setAttribute('target',id);
+ if (form.getAttribute('method') != 'POST')
+ form.setAttribute('method', 'POST');
+ if (form.getAttribute('action') != opts.url)
+ form.setAttribute('action', opts.url);
+
+ // ie borks in some cases when setting encoding
+ if (! options.skipEncodingOverride) {
+ $form.attr({
+ encoding: 'multipart/form-data',
+ enctype: 'multipart/form-data'
+ });
+ }
+
+ // support timout
+ if (opts.timeout)
+ setTimeout(function() { timedOut = true; cb(); }, opts.timeout);
+
+ // add "extra" data to form if provided in options
+ var extraInputs = [];
+ try {
+ if (options.extraData)
+ for (var n in options.extraData)
+ extraInputs.push(
+ $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
+ .appendTo(form)[0]);
+
+ // add iframe to doc and submit the form
+ $io.appendTo('body');
+ io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+ form.submit();
+ }
+ finally {
+ // reset attrs and remove "extra" input elements
+ form.setAttribute('action',a);
+ t ? form.setAttribute('target', t) : $form.removeAttr('target');
+ $(extraInputs).remove();
+ }
+ }, 10);
+
+ var domCheckCount = 50;
+
+ function cb() {
+ if (cbInvoked++) return;
+
+ io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+ var ok = true;
+ try {
+ if (timedOut) throw 'timeout';
+ // extract the server response from the iframe
+ var data, doc;
+
+ doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+
+ var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+ log('isXml='+isXml);
+ if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {
+ if (--domCheckCount) {
+ // in some browsers (Opera) the iframe DOM is not always traversable when
+ // the onload callback fires, so we loop a bit to accommodate
+ cbInvoked = 0;
+ setTimeout(cb, 100);
+ return;
+ }
+ log('Could not access iframe DOM after 50 tries.');
+ return;
+ }
+
+ xhr.responseText = doc.body ? doc.body.innerHTML : null;
+ xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+ xhr.getResponseHeader = function(header){
+ var headers = {'content-type': opts.dataType};
+ return headers[header];
+ };
+
+ if (opts.dataType == 'json' || opts.dataType == 'script') {
+ // see if user embedded response in textarea
+ var ta = doc.getElementsByTagName('textarea')[0];
+ if (ta)
+ xhr.responseText = ta.value;
+ else {
+ // account for browsers injecting pre around json response
+ var pre = doc.getElementsByTagName('pre')[0];
+ if (pre)
+ xhr.responseText = pre.innerHTML;
+ }
+ }
+ else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+ xhr.responseXML = toXml(xhr.responseText);
+ }
+ data = $.httpData(xhr, opts.dataType);
+ }
+ catch(e){
+ ok = false;
+ $.handleError(opts, xhr, 'error', e);
+ }
+
+ // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+ if (ok) {
+ opts.success(data, 'success');
+ if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
+ }
+ if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
+ if (g && ! --$.active) $.event.trigger("ajaxStop");
+ if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');
+
+ // clean up
+ setTimeout(function() {
+ $io.remove();
+ xhr.responseXML = null;
+ }, 100);
+ };
+
+ function toXml(s, doc) {
+ if (window.ActiveXObject) {
+ doc = new ActiveXObject('Microsoft.XMLDOM');
+ doc.async = 'false';
+ doc.loadXML(s);
+ }
+ else
+ doc = (new DOMParser()).parseFromString(s, 'text/xml');
+ return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
+ };
+ };
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ * is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ * used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+ return this.ajaxFormUnbind().bind('submit.form-plugin', function() {
+ $(this).ajaxSubmit(options);
+ return false;
+ }).bind('click.form-plugin', function(e) {
+ var $el = $(e.target);
+ if (!($el.is(":submit,input:image"))) {
+ return;
+ }
+ var form = this;
+ form.clk = e.target;
+ if (e.target.type == 'image') {
+ if (e.offsetX != undefined) {
+ form.clk_x = e.offsetX;
+ form.clk_y = e.offsetY;
+ } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+ var offset = $el.offset();
+ form.clk_x = e.pageX - offset.left;
+ form.clk_y = e.pageY - offset.top;
+ } else {
+ form.clk_x = e.pageX - e.target.offsetLeft;
+ form.clk_y = e.pageY - e.target.offsetTop;
+ }
+ }
+ // clear form vars
+ setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 10);
+ });
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+ return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property. An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+ var a = [];
+ if (this.length == 0) return a;
+
+ var form = this[0];
+ var els = semantic ? form.getElementsByTagName('*') : form.elements;
+ if (!els) return a;
+ for(var i=0, max=els.length; i < max; i++) {
+ var el = els[i];
+ var n = el.name;
+ if (!n) continue;
+
+ if (semantic && form.clk && el.type == "image") {
+ // handle image inputs on the fly when semantic == true
+ if(!el.disabled && form.clk == el) {
+ a.push({name: n, value: $(el).val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ continue;
+ }
+
+ var v = $.fieldValue(el, true);
+ if (v && v.constructor == Array) {
+ for(var j=0, jmax=v.length; j < jmax; j++)
+ a.push({name: n, value: v[j]});
+ }
+ else if (v !== null && typeof v != 'undefined')
+ a.push({name: n, value: v});
+ }
+
+ if (!semantic && form.clk) {
+ // input type=='image' are not found in elements array! handle it here
+ var $input = $(form.clk), input = $input[0], n = input.name;
+ if (n && !input.disabled && input.type == 'image') {
+ a.push({name: n, value: $input.val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ }
+ return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+ //hand off to jQuery.param for proper encoding
+ return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+ var a = [];
+ this.each(function() {
+ var n = this.name;
+ if (!n) return;
+ var v = $.fieldValue(this, successful);
+ if (v && v.constructor == Array) {
+ for (var i=0,max=v.length; i < max; i++)
+ a.push({name: n, value: v[i]});
+ }
+ else if (v !== null && typeof v != 'undefined')
+ a.push({name: this.name, value: v});
+ });
+ //hand off to jQuery.param for proper encoding
+ return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set. For example, consider the following form:
+ *
+ * <form><fieldset>
+ * <input name="A" type="text" />
+ * <input name="A" type="text" />
+ * <input name="B" type="checkbox" value="B1" />
+ * <input name="B" type="checkbox" value="B2"/>
+ * <input name="C" type="radio" value="C1" />
+ * <input name="C" type="radio" value="C2" />
+ * </fieldset></form>
+ *
+ * var v = $(':text').fieldValue();
+ * // if no values are entered into the text inputs
+ * v == ['','']
+ * // if values entered into the text inputs are 'foo' and 'bar'
+ * v == ['foo','bar']
+ *
+ * var v = $(':checkbox').fieldValue();
+ * // if neither checkbox is checked
+ * v === undefined
+ * // if both checkboxes are checked
+ * v == ['B1', 'B2']
+ *
+ * var v = $(':radio').fieldValue();
+ * // if neither radio is checked
+ * v === undefined
+ * // if first radio is checked
+ * v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true. If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array. If no valid value can be determined the
+ * array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+ for (var val=[], i=0, max=this.length; i < max; i++) {
+ var el = this[i];
+ var v = $.fieldValue(el, successful);
+ if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
+ continue;
+ v.constructor == Array ? $.merge(val, v) : val.push(v);
+ }
+ return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+ if (typeof successful == 'undefined') successful = true;
+
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+ tag == 'select' && el.selectedIndex == -1))
+ return null;
+
+ if (tag == 'select') {
+ var index = el.selectedIndex;
+ if (index < 0) return null;
+ var a = [], ops = el.options;
+ var one = (t == 'select-one');
+ var max = (one ? index+1 : ops.length);
+ for(var i=(one ? index : 0); i < max; i++) {
+ var op = ops[i];
+ if (op.selected) {
+ var v = op.value;
+ if (!v) // extra pain for IE...
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+ if (one) return v;
+ a.push(v);
+ }
+ }
+ return a;
+ }
+ return el.value;
+};
+
+/**
+ * Clears the form data. Takes the following actions on the form's input fields:
+ * - input text fields will have their 'value' property set to the empty string
+ * - select elements will have their 'selectedIndex' property set to -1
+ * - checkbox and radio inputs will have their 'checked' property set to false
+ * - inputs of type submit, button, reset, and hidden will *not* be effected
+ * - button elements will *not* be effected
+ */
+$.fn.clearForm = function() {
+ return this.each(function() {
+ $('input,select,textarea', this).clearFields();
+ });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+ return this.each(function() {
+ var t = this.type, tag = this.tagName.toLowerCase();
+ if (t == 'text' || t == 'password' || tag == 'textarea')
+ this.value = '';
+ else if (t == 'checkbox' || t == 'radio')
+ this.checked = false;
+ else if (tag == 'select')
+ this.selectedIndex = -1;
+ });
+};
+
+/**
+ * Resets the form data. Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+ return this.each(function() {
+ // guard against an input with the name of 'reset'
+ // note that IE reports the reset function as an 'object'
+ if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
+ this.reset();
+ });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+ if (b == undefined) b = true;
+ return this.each(function() {
+ this.disabled = !b;
+ });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+ if (select == undefined) select = true;
+ return this.each(function() {
+ var t = this.type;
+ if (t == 'checkbox' || t == 'radio')
+ this.checked = select;
+ else if (this.tagName.toLowerCase() == 'option') {
+ var $sel = $(this).parent('select');
+ if (select && $sel[0] && $sel[0].type == 'select-one') {
+ // deselect all other options
+ $sel.find('option').selected(false);
+ }
+ this.selected = select;
+ }
+ });
+};
+
+// helper fn for console logging
+// set $.fn.ajaxSubmit.debug to true to enable debug logging
+function log() {
+ if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
+ window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
+};
+
+})(jQuery);
diff --git a/askbot/skins/old/media/js/jquery.i18n.js b/askbot/skins/old/media/js/jquery.i18n.js
new file mode 100644
index 00000000..0a155a31
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.i18n.js
@@ -0,0 +1,133 @@
+/*
+ * jQuery i18n plugin
+ * @requires jQuery v1.1 or later
+ *
+ * Examples at: http://recurser.com/articles/2008/02/21/jquery-i18n-translation-plugin/
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Based on 'javascript i18n that almost doesn't suck' by markos
+ * http://markos.gaivo.net/blog/?p=100
+ *
+ * Revision: $Id$
+ * Version: 1.0.0 Feb-10-2008
+ */
+ (function($) {
+/**
+ * i18n provides a mechanism for translating strings using a jscript dictionary.
+ *
+ */
+
+
+/*
+ * i18n property list
+ */
+$.i18n = {
+
+/**
+ * setDictionary()
+ * Initialise the dictionary and translate nodes
+ *
+ * @param property_list i18n_dict : The dictionary to use for translation
+ */
+ setDictionary: function(i18n_dict) {
+ i18n_dict = i18n_dict;
+ },
+
+/**
+ * _()
+ * The actual translation function. Looks the given string up in the
+ * dictionary and returns the translation if one exists. If a translation
+ * is not found, returns the original word
+ *
+ * @param string str : The string to translate
+ * @param property_list params : params for using printf() on the string
+ * @return string : Translated word
+ *
+ */
+ _: function (str, params) {
+ var transl = str;
+ if (i18n_dict&& i18n_dict[str]) {
+ transl = i18n_dict[str];
+ }
+ return this.printf(transl, params);
+ },
+
+/**
+ * toEntity()
+ * Change non-ASCII characters to entity representation
+ *
+ * @param string str : The string to transform
+ * @return string result : Original string with non-ASCII content converted to entities
+ *
+ */
+ toEntity: function (str) {
+ var result = '';
+ for (var i=0;i<str.length; i++) {
+ if (str.charCodeAt(i) > 128)
+ result += "&#"+str.charCodeAt(i)+";";
+ else
+ result += str.charAt(i);
+ }
+ return result;
+ },
+
+/**
+ * stripStr()
+ *
+ * @param string str : The string to strip
+ * @return string result : Stripped string
+ *
+ */
+ stripStr: function(str) {
+ return str.replace(/^\s*/, "").replace(/\s*$/, "");
+ },
+
+/**
+ * stripStrML()
+ *
+ * @param string str : The multi-line string to strip
+ * @return string result : Stripped string
+ *
+ */
+ stripStrML: function(str) {
+ // Split because m flag doesn't exist before JS1.5 and we need to
+ // strip newlines anyway
+ var parts = str.split('\n');
+ for (var i=0; i<parts.length; i++)
+ parts[i] = stripStr(parts[i]);
+
+ // Don't join with empty strings, because it "concats" words
+ // And strip again
+ return stripStr(parts.join(" "));
+ },
+
+/*
+ * printf()
+ * C-printf like function, which substitutes %s with parameters
+ * given in list. %%s is used to escape %s.
+ *
+ * Doesn't work in IE5.0 (splice)
+ *
+ * @param string S : string to perform printf on.
+ * @param string L : Array of arguments for printf()
+ */
+ printf: function(S, L) {
+ if (!L) return S;
+
+ var nS = "";
+ var tS = S.split("%s");
+
+ for(var i=0; i<L.length; i++) {
+ if (tS[i].lastIndexOf('%') == tS[i].length-1 && i != L.length-1)
+ tS[i] += "s"+tS.splice(i+1,1)[0];
+ nS += tS[i] + L[i];
+ }
+ return nS + tS[tS.length-1];
+ }
+
+};
+
+
+})(jQuery);
diff --git a/askbot/skins/old/media/js/jquery.openid.js b/askbot/skins/old/media/js/jquery.openid.js
new file mode 100644
index 00000000..af7d8cb9
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.openid.js
@@ -0,0 +1,176 @@
+/*
+openid login boxes
+*/
+var providers_large = {
+ google: {
+ name: 'Google',
+ url: 'https://www.google.com/accounts/o8/id'
+ },
+ yahoo: {
+ name: 'Yahoo',
+ url: 'http://yahoo.com/'
+ },
+ aol: {
+ name: 'AOL',
+ label: 'Enter your AOL screenname.',
+ url: 'http://openid.aol.com/{username}'
+ },
+ openid: {
+ name: 'OpenID',
+ label: 'Enter your OpenID.',
+ url: 'http://'
+ }
+};
+var providers_small = {
+ myopenid: {
+ name: 'MyOpenID',
+ label: 'Enter your MyOpenID username.',
+ url: 'http://{username}.myopenid.com/'
+ },
+ livejournal: {
+ name: 'LiveJournal',
+ label: 'Enter your Livejournal username.',
+ url: 'http://{username}.livejournal.com/'
+ },
+ flickr: {
+ name: 'Flickr',
+ label: 'Enter your Flickr username.',
+ url: 'http://flickr.com/{username}/'
+ },
+ technorati: {
+ name: 'Technorati',
+ label: 'Enter your Technorati username.',
+ url: 'http://technorati.com/people/technorati/{username}/'
+ },
+ wordpress: {
+ name: 'Wordpress',
+ label: 'Enter your Wordpress.com username.',
+ url: 'http://{username}.wordpress.com/'
+ },
+ blogger: {
+ name: 'Blogger',
+ label: 'Your Blogger account',
+ url: 'http://{username}.blogspot.com/'
+ },
+ verisign: {
+ name: 'Verisign',
+ label: 'Your Verisign username',
+ url: 'http://{username}.pip.verisignlabs.com/'
+ },
+ vidoop: {
+ name: 'Vidoop',
+ label: 'Your Vidoop username',
+ url: 'http://{username}.myvidoop.com/'
+ },
+ verisign: {
+ name: 'Verisign',
+ label: 'Your Verisign username',
+ url: 'http://{username}.pip.verisignlabs.com/'
+ },
+ claimid: {
+ name: 'ClaimID',
+ label: 'Your ClaimID username',
+ url: 'http://claimid.com/{username}'
+ }
+};
+var providers = $.extend({}, providers_large, providers_small);
+
+var openid = {
+
+ cookie_expires: 6*30, // 6 months.
+ cookie_name: 'openid_provider',
+ cookie_path: '/',
+
+ img_path: '/media/images/openid/',
+
+ input_id: null,
+ provider_url: null,
+
+ init: function(input_id) {
+
+ var openid_btns = $('#openid_btns');
+ this.input_id = input_id;
+
+ $('#openid_choice').show();
+ //$('#openid_input_area').empty();
+
+ // add box for each provider
+ for (id in providers_large) {
+ openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
+ }
+ if (providers_small) {
+ openid_btns.append('<br/>');
+ for (id in providers_small) {
+ openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico'));
+ }
+ }
+
+ var box_id = this.readCookie();
+ if (box_id) {
+ this.signin(box_id, true);
+ }
+ },
+ getBoxHTML: function(provider, box_size, image_ext) {
+
+ var box_id = provider["name"].toLowerCase();
+ return '<a title="'+provider["name"]+'" href="javascript: openid.signin(\''+ box_id +'\');"' +
+ ' style="background: #FFF url(' + this.img_path + box_id + image_ext+') no-repeat center center" ' + 'class="' + box_id + ' openid_' + box_size + '_btn"></a>';
+
+ },
+ /* Provider image click */
+ signin: function(box_id, onload) {
+ var provider = providers[box_id];
+ if (! provider) {
+ return;
+ }
+ this.highlight(box_id);
+ this.setCookie(box_id);
+
+ $('#'+this.input_id).val(provider['url']);
+ var input = $('#'+this.input_id);
+ if(document.selection){
+ var r = document.all.openid_url.createTextRange();
+ var res = r.findText("{username}");
+ if(res)
+ r.select();
+
+ }
+ else {
+ var text = input.val();
+ var searchText = "{username}";
+ var posStart = text.indexOf(searchText);
+ if(posStart > -1){
+ input.focus();
+ document.getElementById(this.input_id).setSelectionRange(posStart, posStart + searchText.length);
+ }
+ }
+ },
+
+ highlight: function (box_id) {
+ // remove previous highlight.
+ var highlight = $('#openid_highlight');
+ if (highlight) {
+ highlight.replaceWith($('#openid_highlight a')[0]);
+ }
+ // add new highlight.
+ $('.'+box_id).wrap('<div id="openid_highlight"></div>');
+ },
+
+ setCookie: function (value) {
+ var date = new Date();
+ date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000));
+ var expires = "; expires="+date.toGMTString();
+ document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path;
+ },
+
+ readCookie: function () {
+ var nameEQ = this.cookie_name + "=";
+ var ca = document.cookie.split(';');
+ for(var i=0;i < ca.length;i++) {
+ var c = ca[i];
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
+ }
+ return null;
+ }
+};
diff --git a/askbot/skins/old/media/js/jquery.validate.js b/askbot/skins/old/media/js/jquery.validate.js
new file mode 100644
index 00000000..e402ea8c
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.validate.js
@@ -0,0 +1,1146 @@
+/*
+ * jQuery validation plug-in 1.7
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2008 Jörn Zaefferer
+ *
+ * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($) {
+
+$.extend($.fn, {
+ // http://docs.jquery.com/Plugins/Validation/validate
+ validate: function( options ) {
+
+ // if nothing is selected, return nothing; can't chain anyway
+ if (!this.length) {
+ options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
+ return;
+ }
+
+ // check if a validator for this form was already created
+ var validator = $.data(this[0], 'validator');
+ if ( validator ) {
+ return validator;
+ }
+
+ validator = new $.validator( options, this[0] );
+ $.data(this[0], 'validator', validator);
+
+ if ( validator.settings.onsubmit ) {
+
+ // allow suppresing validation by adding a cancel class to the submit button
+ this.find("input, button").filter(".cancel").click(function() {
+ validator.cancelSubmit = true;
+ });
+
+ // when a submitHandler is used, capture the submitting button
+ if (validator.settings.submitHandler) {
+ this.find("input, button").filter(":submit").click(function() {
+ validator.submitButton = this;
+ });
+ }
+
+ // validate the form on submit
+ this.submit( function( event ) {
+ if ( validator.settings.debug )
+ // prevent form submit to be able to see console output
+ event.preventDefault();
+
+ function handle() {
+ if ( validator.settings.submitHandler ) {
+ if (validator.submitButton) {
+ // insert a hidden input as a replacement for the missing submit button
+ var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
+ }
+ validator.settings.submitHandler.call( validator, validator.currentForm );
+ if (validator.submitButton) {
+ // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+ hidden.remove();
+ }
+ return false;
+ }
+ return true;
+ }
+
+ // prevent submit for invalid forms or custom submit handlers
+ if ( validator.cancelSubmit ) {
+ validator.cancelSubmit = false;
+ return handle();
+ }
+ if ( validator.form() ) {
+ if ( validator.pendingRequest ) {
+ validator.formSubmitted = true;
+ return false;
+ }
+ return handle();
+ } else {
+ validator.focusInvalid();
+ return false;
+ }
+ });
+ }
+
+ return validator;
+ },
+ // http://docs.jquery.com/Plugins/Validation/valid
+ valid: function() {
+ if ( $(this[0]).is('form')) {
+ return this.validate().form();
+ } else {
+ var valid = true;
+ var validator = $(this[0].form).validate();
+ this.each(function() {
+ valid &= validator.element(this);
+ });
+ return valid;
+ }
+ },
+ // attributes: space seperated list of attributes to retrieve and remove
+ removeAttrs: function(attributes) {
+ var result = {},
+ $element = this;
+ $.each(attributes.split(/\s/), function(index, value) {
+ result[value] = $element.attr(value);
+ $element.removeAttr(value);
+ });
+ return result;
+ },
+ // http://docs.jquery.com/Plugins/Validation/rules
+ rules: function(command, argument) {
+ var element = this[0];
+
+ if (command) {
+ var settings = $.data(element.form, 'validator').settings;
+ var staticRules = settings.rules;
+ var existingRules = $.validator.staticRules(element);
+ switch(command) {
+ case "add":
+ $.extend(existingRules, $.validator.normalizeRule(argument));
+ staticRules[element.name] = existingRules;
+ if (argument.messages)
+ settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+ break;
+ case "remove":
+ if (!argument) {
+ delete staticRules[element.name];
+ return existingRules;
+ }
+ var filtered = {};
+ $.each(argument.split(/\s/), function(index, method) {
+ filtered[method] = existingRules[method];
+ delete existingRules[method];
+ });
+ return filtered;
+ }
+ }
+
+ var data = $.validator.normalizeRules(
+ $.extend(
+ {},
+ $.validator.metadataRules(element),
+ $.validator.classRules(element),
+ $.validator.attributeRules(element),
+ $.validator.staticRules(element)
+ ), element);
+
+ // make sure required is at front
+ if (data.required) {
+ var param = data.required;
+ delete data.required;
+ data = $.extend({required: param}, data);
+ }
+
+ return data;
+ }
+});
+
+// Custom selectors
+$.extend($.expr[":"], {
+ // http://docs.jquery.com/Plugins/Validation/blank
+ blank: function(a) {return !$.trim("" + a.value);},
+ // http://docs.jquery.com/Plugins/Validation/filled
+ filled: function(a) {return !!$.trim("" + a.value);},
+ // http://docs.jquery.com/Plugins/Validation/unchecked
+ unchecked: function(a) {return !a.checked;}
+});
+
+// constructor for validator
+$.validator = function( options, form ) {
+ this.settings = $.extend( true, {}, $.validator.defaults, options );
+ this.currentForm = form;
+ this.init();
+};
+
+$.validator.format = function(source, params) {
+ if ( arguments.length == 1 )
+ return function() {
+ var args = $.makeArray(arguments);
+ args.unshift(source);
+ return $.validator.format.apply( this, args );
+ };
+ if ( arguments.length > 2 && params.constructor != Array ) {
+ params = $.makeArray(arguments).slice(1);
+ }
+ if ( params.constructor != Array ) {
+ params = [ params ];
+ }
+ $.each(params, function(i, n) {
+ source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
+ });
+ return source;
+};
+
+$.extend($.validator, {
+
+ defaults: {
+ messages: {},
+ groups: {},
+ rules: {},
+ errorClass: "error",
+ validClass: "valid",
+ errorElement: "label",
+ focusInvalid: true,
+ errorContainer: $( [] ),
+ errorLabelContainer: $( [] ),
+ onsubmit: true,
+ ignore: [],
+ ignoreTitle: false,
+ onfocusin: function(element) {
+ this.lastActive = element;
+
+ // hide error label and remove error class on focus if enabled
+ if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+ this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+ this.errorsFor(element).hide();
+ }
+ },
+ onfocusout: function(element) {
+ if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
+ this.element(element);
+ }
+ },
+ onkeyup: function(element) {
+ if ( element.name in this.submitted || element == this.lastElement ) {
+ this.element(element);
+ }
+ },
+ onclick: function(element) {
+ // click on selects, radiobuttons and checkboxes
+ if ( element.name in this.submitted )
+ this.element(element);
+ // or option elements, check parent select in that case
+ else if (element.parentNode.name in this.submitted)
+ this.element(element.parentNode);
+ },
+ highlight: function( element, errorClass, validClass ) {
+ $(element).addClass(errorClass).removeClass(validClass);
+ },
+ unhighlight: function( element, errorClass, validClass ) {
+ $(element).removeClass(errorClass).addClass(validClass);
+ }
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+ setDefaults: function(settings) {
+ $.extend( $.validator.defaults, settings );
+ },
+
+ messages: {
+ required: "This field is required.",
+ remote: "Please fix this field.",
+ email: "Please enter a valid email address.",
+ url: "Please enter a valid URL.",
+ date: "Please enter a valid date.",
+ dateISO: "Please enter a valid date (ISO).",
+ number: "Please enter a valid number.",
+ digits: "Please enter only digits.",
+ creditcard: "Please enter a valid credit card number.",
+ equalTo: "Please enter the same value again.",
+ accept: "Please enter a value with a valid extension.",
+ maxlength: $.validator.format("Please enter no more than {0} characters."),
+ minlength: $.validator.format("Please enter at least {0} characters."),
+ rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
+ range: $.validator.format("Please enter a value between {0} and {1}."),
+ max: $.validator.format("Please enter a value less than or equal to {0}."),
+ min: $.validator.format("Please enter a value greater than or equal to {0}.")
+ },
+
+ autoCreateRanges: false,
+
+ prototype: {
+
+ init: function() {
+ this.labelContainer = $(this.settings.errorLabelContainer);
+ this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
+ this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+ this.submitted = {};
+ this.valueCache = {};
+ this.pendingRequest = 0;
+ this.pending = {};
+ this.invalid = {};
+ this.reset();
+
+ var groups = (this.groups = {});
+ $.each(this.settings.groups, function(key, value) {
+ $.each(value.split(/\s/), function(index, name) {
+ groups[name] = key;
+ });
+ });
+ var rules = this.settings.rules;
+ $.each(rules, function(key, value) {
+ rules[key] = $.validator.normalizeRule(value);
+ });
+
+ function delegate(event) {
+ var validator = $.data(this[0].form, "validator"),
+ eventType = "on" + event.type.replace(/^validate/, "");
+ validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
+ }
+ $(this.currentForm)
+ .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
+ .validateDelegate(":radio, :checkbox, select, option", "click", delegate);
+
+ if (this.settings.invalidHandler)
+ $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/form
+ form: function() {
+ this.checkForm();
+ $.extend(this.submitted, this.errorMap);
+ this.invalid = $.extend({}, this.errorMap);
+ if (!this.valid())
+ $(this.currentForm).triggerHandler("invalid-form", [this]);
+ this.showErrors();
+ return this.valid();
+ },
+
+ checkForm: function() {
+ this.prepareForm();
+ for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
+ this.check( elements[i] );
+ }
+ return this.valid();
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/element
+ element: function( element ) {
+ element = this.clean( element );
+ this.lastElement = element;
+ this.prepareElement( element );
+ this.currentElements = $(element);
+ var result = this.check( element );
+ if ( result ) {
+ delete this.invalid[element.name];
+ } else {
+ this.invalid[element.name] = true;
+ }
+ if ( !this.numberOfInvalids() ) {
+ // Hide error containers on last error
+ this.toHide = this.toHide.add( this.containers );
+ }
+ this.showErrors();
+ return result;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+ showErrors: function(errors) {
+ if(errors) {
+ // add items to error list and map
+ $.extend( this.errorMap, errors );
+ this.errorList = [];
+ for ( var name in errors ) {
+ this.errorList.push({
+ message: errors[name],
+ element: this.findByName(name)[0]
+ });
+ }
+ // remove items from success list
+ this.successList = $.grep( this.successList, function(element) {
+ return !(element.name in errors);
+ });
+ }
+ this.settings.showErrors
+ ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
+ : this.defaultShowErrors();
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+ resetForm: function() {
+ if ( $.fn.resetForm )
+ $( this.currentForm ).resetForm();
+ this.submitted = {};
+ this.prepareForm();
+ this.hideErrors();
+ this.elements().removeClass( this.settings.errorClass );
+ },
+
+ numberOfInvalids: function() {
+ return this.objectLength(this.invalid);
+ },
+
+ objectLength: function( obj ) {
+ var count = 0;
+ for ( var i in obj )
+ count++;
+ return count;
+ },
+
+ hideErrors: function() {
+ this.addWrapper( this.toHide ).hide();
+ },
+
+ valid: function() {
+ return this.size() == 0;
+ },
+
+ size: function() {
+ return this.errorList.length;
+ },
+
+ focusInvalid: function() {
+ if( this.settings.focusInvalid ) {
+ try {
+ $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
+ .filter(":visible")
+ .focus()
+ // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+ .trigger("focusin");
+ } catch(e) {
+ // ignore IE throwing errors when focusing hidden elements
+ }
+ }
+ },
+
+ findLastActive: function() {
+ var lastActive = this.lastActive;
+ return lastActive && $.grep(this.errorList, function(n) {
+ return n.element.name == lastActive.name;
+ }).length == 1 && lastActive;
+ },
+
+ elements: function() {
+ var validator = this,
+ rulesCache = {};
+
+ // select all valid inputs inside the form (no submit or reset buttons)
+ // workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
+ return $([]).add(this.currentForm.elements)
+ .filter(":input")
+ .not(":submit, :reset, :image, [disabled]")
+ .not( this.settings.ignore )
+ .filter(function() {
+ !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
+
+ // select only the first element for each name, and only those with rules specified
+ if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
+ return false;
+
+ rulesCache[this.name] = true;
+ return true;
+ });
+ },
+
+ clean: function( selector ) {
+ return $( selector )[0];
+ },
+
+ errors: function() {
+ return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
+ },
+
+ reset: function() {
+ this.successList = [];
+ this.errorList = [];
+ this.errorMap = {};
+ this.toShow = $([]);
+ this.toHide = $([]);
+ this.currentElements = $([]);
+ },
+
+ prepareForm: function() {
+ this.reset();
+ this.toHide = this.errors().add( this.containers );
+ },
+
+ prepareElement: function( element ) {
+ this.reset();
+ this.toHide = this.errorsFor(element);
+ },
+
+ check: function( element ) {
+ element = this.clean( element );
+
+ // if radio/checkbox, validate first element in group instead
+ if (this.checkable(element)) {
+ element = this.findByName( element.name )[0];
+ }
+
+ var rules = $(element).rules();
+ var dependencyMismatch = false;
+ for( method in rules ) {
+ var rule = { method: method, parameters: rules[method] };
+ try {
+ var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
+
+ // if a method indicates that the field is optional and therefore valid,
+ // don't mark it as valid when there are no other rules
+ if ( result == "dependency-mismatch" ) {
+ dependencyMismatch = true;
+ continue;
+ }
+ dependencyMismatch = false;
+
+ if ( result == "pending" ) {
+ this.toHide = this.toHide.not( this.errorsFor(element) );
+ return;
+ }
+
+ if( !result ) {
+ this.formatAndAdd( element, rule );
+ return false;
+ }
+ } catch(e) {
+ this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
+ + ", check the '" + rule.method + "' method", e);
+ throw e;
+ }
+ }
+ if (dependencyMismatch)
+ return;
+ if ( this.objectLength(rules) )
+ this.successList.push(element);
+ return true;
+ },
+
+ // return the custom message for the given element and validation method
+ // specified in the element's "messages" metadata
+ customMetaMessage: function(element, method) {
+ if (!$.metadata)
+ return;
+
+ var meta = this.settings.meta
+ ? $(element).metadata()[this.settings.meta]
+ : $(element).metadata();
+
+ return meta && meta.messages && meta.messages[method];
+ },
+
+ // return the custom message for the given element name and validation method
+ customMessage: function( name, method ) {
+ var m = this.settings.messages[name];
+ return m && (m.constructor == String
+ ? m
+ : m[method]);
+ },
+
+ // return the first defined argument, allowing empty strings
+ findDefined: function() {
+ for(var i = 0; i < arguments.length; i++) {
+ if (arguments[i] !== undefined)
+ return arguments[i];
+ }
+ return undefined;
+ },
+
+ defaultMessage: function( element, method) {
+ return this.findDefined(
+ this.customMessage( element.name, method ),
+ this.customMetaMessage( element, method ),
+ // title is never undefined, so handle empty string as undefined
+ !this.settings.ignoreTitle && element.title || undefined,
+ $.validator.messages[method],
+ "<strong>Warning: No message defined for " + element.name + "</strong>"
+ );
+ },
+
+ formatAndAdd: function( element, rule ) {
+ var message = this.defaultMessage( element, rule.method ),
+ theregex = /\$?\{(\d+)\}/g;
+ if ( typeof message == "function" ) {
+ message = message.call(this, rule.parameters, element);
+ } else if (theregex.test(message)) {
+ message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
+ }
+ this.errorList.push({
+ message: message,
+ element: element
+ });
+
+ this.errorMap[element.name] = message;
+ this.submitted[element.name] = message;
+ },
+
+ addWrapper: function(toToggle) {
+ if ( this.settings.wrapper )
+ toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+ return toToggle;
+ },
+
+ defaultShowErrors: function() {
+ for ( var i = 0; this.errorList[i]; i++ ) {
+ var error = this.errorList[i];
+ this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+ this.showLabel( error.element, error.message );
+ }
+ if( this.errorList.length ) {
+ this.toShow = this.toShow.add( this.containers );
+ }
+ if (this.settings.success) {
+ for ( var i = 0; this.successList[i]; i++ ) {
+ this.showLabel( this.successList[i] );
+ }
+ }
+ if (this.settings.unhighlight) {
+ for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
+ this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+ }
+ }
+ this.toHide = this.toHide.not( this.toShow );
+ this.hideErrors();
+ this.addWrapper( this.toShow ).show();
+ },
+
+ validElements: function() {
+ return this.currentElements.not(this.invalidElements());
+ },
+
+ invalidElements: function() {
+ return $(this.errorList).map(function() {
+ return this.element;
+ });
+ },
+
+ showLabel: function(element, message) {
+ var label = this.errorsFor( element );
+ if ( label.length ) {
+ // refresh error/success class
+ label.removeClass().addClass( this.settings.errorClass );
+
+ // check if we have a generated label, replace the message then
+ label.attr("generated") && label.html(message);
+ } else {
+ // create label
+ label = $("<" + this.settings.errorElement + "/>")
+ .attr({"for": this.idOrName(element), generated: true})
+ .addClass(this.settings.errorClass)
+ .html(message || "");
+ if ( this.settings.wrapper ) {
+ // make sure the element is visible, even in IE
+ // actually showing the wrapped element is handled elsewhere
+ label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+ }
+ if ( !this.labelContainer.append(label).length )
+ this.settings.errorPlacement
+ ? this.settings.errorPlacement(label, $(element) )
+ : label.insertAfter(element);
+ }
+ if ( !message && this.settings.success ) {
+ label.text("");
+ typeof this.settings.success == "string"
+ ? label.addClass( this.settings.success )
+ : this.settings.success( label );
+ }
+ this.toShow = this.toShow.add(label);
+ },
+
+ errorsFor: function(element) {
+ var name = this.idOrName(element);
+ return this.errors().filter(function() {
+ return $(this).attr('for') == name;
+ });
+ },
+
+ idOrName: function(element) {
+ return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+ },
+
+ checkable: function( element ) {
+ return /radio|checkbox/i.test(element.type);
+ },
+
+ findByName: function( name ) {
+ // select by name and filter by form for performance over form.find("[name=...]")
+ var form = this.currentForm;
+ return $(document.getElementsByName(name)).map(function(index, element) {
+ return element.form == form && element.name == name && element || null;
+ });
+ },
+
+ getLength: function(value, element) {
+ switch( element.nodeName.toLowerCase() ) {
+ case 'select':
+ return $("option:selected", element).length;
+ case 'input':
+ if( this.checkable( element) )
+ return this.findByName(element.name).filter(':checked').length;
+ }
+ return value.length;
+ },
+
+ depend: function(param, element) {
+ return this.dependTypes[typeof param]
+ ? this.dependTypes[typeof param](param, element)
+ : true;
+ },
+
+ dependTypes: {
+ "boolean": function(param, element) {
+ return param;
+ },
+ "string": function(param, element) {
+ return !!$(param, element.form).length;
+ },
+ "function": function(param, element) {
+ return param(element);
+ }
+ },
+
+ optional: function(element) {
+ return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
+ },
+
+ startRequest: function(element) {
+ if (!this.pending[element.name]) {
+ this.pendingRequest++;
+ this.pending[element.name] = true;
+ }
+ },
+
+ stopRequest: function(element, valid) {
+ this.pendingRequest--;
+ // sometimes synchronization fails, make sure pendingRequest is never < 0
+ if (this.pendingRequest < 0)
+ this.pendingRequest = 0;
+ delete this.pending[element.name];
+ if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
+ $(this.currentForm).submit();
+ this.formSubmitted = false;
+ } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
+ $(this.currentForm).triggerHandler("invalid-form", [this]);
+ this.formSubmitted = false;
+ }
+ },
+
+ previousValue: function(element) {
+ return $.data(element, "previousValue") || $.data(element, "previousValue", {
+ old: null,
+ valid: true,
+ message: this.defaultMessage( element, "remote" )
+ });
+ }
+
+ },
+
+ classRuleSettings: {
+ required: {required: true},
+ email: {email: true},
+ url: {url: true},
+ date: {date: true},
+ dateISO: {dateISO: true},
+ dateDE: {dateDE: true},
+ number: {number: true},
+ numberDE: {numberDE: true},
+ digits: {digits: true},
+ creditcard: {creditcard: true}
+ },
+
+ addClassRules: function(className, rules) {
+ className.constructor == String ?
+ this.classRuleSettings[className] = rules :
+ $.extend(this.classRuleSettings, className);
+ },
+
+ classRules: function(element) {
+ var rules = {};
+ var classes = $(element).attr('class');
+ classes && $.each(classes.split(' '), function() {
+ if (this in $.validator.classRuleSettings) {
+ $.extend(rules, $.validator.classRuleSettings[this]);
+ }
+ });
+ return rules;
+ },
+
+ attributeRules: function(element) {
+ var rules = {};
+ var $element = $(element);
+
+ for (method in $.validator.methods) {
+ var value = $element.attr(method);
+ if (value) {
+ rules[method] = value;
+ }
+ }
+
+ // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
+ if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
+ delete rules.maxlength;
+ }
+
+ return rules;
+ },
+
+ metadataRules: function(element) {
+ if (!$.metadata) return {};
+
+ var meta = $.data(element.form, 'validator').settings.meta;
+ return meta ?
+ $(element).metadata()[meta] :
+ $(element).metadata();
+ },
+
+ staticRules: function(element) {
+ var rules = {};
+ var validator = $.data(element.form, 'validator');
+ if (validator.settings.rules) {
+ rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+ }
+ return rules;
+ },
+
+ normalizeRules: function(rules, element) {
+ // handle dependency check
+ $.each(rules, function(prop, val) {
+ // ignore rule when param is explicitly false, eg. required:false
+ if (val === false) {
+ delete rules[prop];
+ return;
+ }
+ if (val.param || val.depends) {
+ var keepRule = true;
+ switch (typeof val.depends) {
+ case "string":
+ keepRule = !!$(val.depends, element.form).length;
+ break;
+ case "function":
+ keepRule = val.depends.call(element, element);
+ break;
+ }
+ if (keepRule) {
+ rules[prop] = val.param !== undefined ? val.param : true;
+ } else {
+ delete rules[prop];
+ }
+ }
+ });
+
+ // evaluate parameters
+ $.each(rules, function(rule, parameter) {
+ rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
+ });
+
+ // clean number parameters
+ $.each(['minlength', 'maxlength', 'min', 'max'], function() {
+ if (rules[this]) {
+ rules[this] = Number(rules[this]);
+ }
+ });
+ $.each(['rangelength', 'range'], function() {
+ if (rules[this]) {
+ rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
+ }
+ });
+
+ if ($.validator.autoCreateRanges) {
+ // auto-create ranges
+ if (rules.min && rules.max) {
+ rules.range = [rules.min, rules.max];
+ delete rules.min;
+ delete rules.max;
+ }
+ if (rules.minlength && rules.maxlength) {
+ rules.rangelength = [rules.minlength, rules.maxlength];
+ delete rules.minlength;
+ delete rules.maxlength;
+ }
+ }
+
+ // To support custom messages in metadata ignore rule methods titled "messages"
+ if (rules.messages) {
+ delete rules.messages;
+ }
+
+ return rules;
+ },
+
+ // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+ normalizeRule: function(data) {
+ if( typeof data == "string" ) {
+ var transformed = {};
+ $.each(data.split(/\s/), function() {
+ transformed[this] = true;
+ });
+ data = transformed;
+ }
+ return data;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+ addMethod: function(name, method, message) {
+ $.validator.methods[name] = method;
+ $.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
+ if (method.length < 3) {
+ $.validator.addClassRules(name, $.validator.normalizeRule(name));
+ }
+ },
+
+ methods: {
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/required
+ required: function(value, element, param) {
+ // check if dependency is met
+ if ( !this.depend(param, element) )
+ return "dependency-mismatch";
+ switch( element.nodeName.toLowerCase() ) {
+ case 'select':
+ // could be an array for select-multiple or a string, both are fine this way
+ var val = $(element).val();
+ return val && val.length > 0;
+ case 'input':
+ if ( this.checkable(element) )
+ return this.getLength(value, element) > 0;
+ default:
+ return $.trim(value).length > 0;
+ }
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/remote
+ remote: function(value, element, param) {
+ if ( this.optional(element) )
+ return "dependency-mismatch";
+
+ var previous = this.previousValue(element);
+ if (!this.settings.messages[element.name] )
+ this.settings.messages[element.name] = {};
+ previous.originalMessage = this.settings.messages[element.name].remote;
+ this.settings.messages[element.name].remote = previous.message;
+
+ param = typeof param == "string" && {url:param} || param;
+
+ if ( previous.old !== value ) {
+ previous.old = value;
+ var validator = this;
+ this.startRequest(element);
+ var data = {};
+ data[element.name] = value;
+ $.ajax($.extend(true, {
+ url: param,
+ mode: "abort",
+ port: "validate" + element.name,
+ dataType: "json",
+ data: data,
+ success: function(response) {
+ validator.settings.messages[element.name].remote = previous.originalMessage;
+ var valid = response === true;
+ if ( valid ) {
+ var submitted = validator.formSubmitted;
+ validator.prepareElement(element);
+ validator.formSubmitted = submitted;
+ validator.successList.push(element);
+ validator.showErrors();
+ } else {
+ var errors = {};
+ var message = (previous.message = response || validator.defaultMessage( element, "remote" ));
+ errors[element.name] = $.isFunction(message) ? message(value) : message;
+ validator.showErrors(errors);
+ }
+ previous.valid = valid;
+ validator.stopRequest(element, valid);
+ }
+ }, param));
+ return "pending";
+ } else if( this.pending[element.name] ) {
+ return "pending";
+ }
+ return previous.valid;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/minlength
+ minlength: function(value, element, param) {
+ return this.optional(element) || this.getLength($.trim(value), element) >= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+ maxlength: function(value, element, param) {
+ return this.optional(element) || this.getLength($.trim(value), element) <= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+ rangelength: function(value, element, param) {
+ var length = this.getLength($.trim(value), element);
+ return this.optional(element) || ( length >= param[0] && length <= param[1] );
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/min
+ min: function( value, element, param ) {
+ return this.optional(element) || value >= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/max
+ max: function( value, element, param ) {
+ return this.optional(element) || value <= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/range
+ range: function( value, element, param ) {
+ return this.optional(element) || ( value >= param[0] && value <= param[1] );
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/email
+ email: function(value, element) {
+ // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
+ return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/url
+ url: function(value, element) {
+ // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
+ return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/date
+ date: function(value, element) {
+ return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+ dateISO: function(value, element) {
+ return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/number
+ number: function(value, element) {
+ return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/digits
+ digits: function(value, element) {
+ return this.optional(element) || /^\d+$/.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
+ // based on http://en.wikipedia.org/wiki/Luhn
+ creditcard: function(value, element) {
+ if ( this.optional(element) )
+ return "dependency-mismatch";
+ // accept only digits and dashes
+ if (/[^0-9-]+/.test(value))
+ return false;
+ var nCheck = 0,
+ nDigit = 0,
+ bEven = false;
+
+ value = value.replace(/\D/g, "");
+
+ for (var n = value.length - 1; n >= 0; n--) {
+ var cDigit = value.charAt(n);
+ var nDigit = parseInt(cDigit, 10);
+ if (bEven) {
+ if ((nDigit *= 2) > 9)
+ nDigit -= 9;
+ }
+ nCheck += nDigit;
+ bEven = !bEven;
+ }
+
+ return (nCheck % 10) == 0;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/accept
+ accept: function(value, element, param) {
+ param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
+ return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+ equalTo: function(value, element, param) {
+ // bind to the blur event of the target in order to revalidate whenever the target field is updated
+ // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
+ var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
+ $(element).valid();
+ });
+ return value == target.val();
+ }
+
+ }
+
+});
+
+// deprecated, use $.validator.format instead
+$.format = $.validator.format;
+
+})(jQuery);
+
+// ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+;(function($) {
+ var ajax = $.ajax;
+ var pendingRequests = {};
+ $.ajax = function(settings) {
+ // create settings for compatibility with ajaxSetup
+ settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
+ var port = settings.port;
+ if (settings.mode == "abort") {
+ if ( pendingRequests[port] ) {
+ pendingRequests[port].abort();
+ }
+ return (pendingRequests[port] = ajax.apply(this, arguments));
+ }
+ return ajax.apply(this, arguments);
+ };
+})(jQuery);
+
+// provides cross-browser focusin and focusout events
+// IE has native support, in other browsers, use event caputuring (neither bubbles)
+
+// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
+// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
+;(function($) {
+ // only implement if not provided by jQuery core (since 1.4)
+ // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
+ if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
+ $.each({
+ focus: 'focusin',
+ blur: 'focusout'
+ }, function( original, fix ){
+ $.event.special[fix] = {
+ setup:function() {
+ this.addEventListener( original, handler, true );
+ },
+ teardown:function() {
+ this.removeEventListener( original, handler, true );
+ },
+ handler: function(e) {
+ arguments[0] = $.event.fix(e);
+ arguments[0].type = fix;
+ return $.event.handle.apply(this, arguments);
+ }
+ };
+ function handler(e) {
+ e = $.event.fix(e);
+ e.type = fix;
+ return $.event.handle.call(this, e);
+ }
+ });
+ };
+ $.extend($.fn, {
+ validateDelegate: function(delegate, type, handler) {
+ return this.bind(type, function(event) {
+ var target = $(event.target);
+ if (target.is(delegate)) {
+ return handler.apply(target, arguments);
+ }
+ });
+ }
+ });
+})(jQuery);
diff --git a/askbot/skins/old/media/js/jquery.validate.min.js b/askbot/skins/old/media/js/jquery.validate.min.js
new file mode 100644
index 00000000..6264866f
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.validate.min.js
@@ -0,0 +1,16 @@
+/*
+ * jQuery validation plug-in 1.7
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2008 Jörn Zaefferer
+ *
+ * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return;}var validator=$.data(this[0],'validator');if(validator){return validator;}validator=new $.validator(options,this[0]);$.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true;});if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this;});}this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton){var hidden=$("<input type='hidden'/>").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);}validator.settings.submitHandler.call(validator,validator.currentForm);if(validator.submitButton){hidden.remove();}return false;}return true;}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle();}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false;}return handle();}else{validator.focusInvalid();return false;}});}return validator;},valid:function(){if($(this[0]).is('form')){return this.validate().form();}else{var valid=true;var validator=$(this[0].form).validate();this.each(function(){valid&=validator.element(this);});return valid;}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);$element.removeAttr(value);});return result;},rules:function(command,argument){var element=this[0];if(command){var settings=$.data(element.form,'validator').settings;var staticRules=settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;if(argument.messages)settings.messages[element.name]=$.extend(settings.messages[element.name],argument.messages);break;case"remove":if(!argument){delete staticRules[element.name];return existingRules;}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method];});return filtered;}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data);}return data;}});$.extend($.expr[":"],{blank:function(a){return!$.trim(""+a.value);},filled:function(a){return!!$.trim(""+a.value);},unchecked:function(a){return!a.checked;}});$.validator=function(options,form){this.settings=$.extend(true,{},$.validator.defaults,options);this.currentForm=form;this.init();};$.validator.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.validator.format.apply(this,args);};if(arguments.length>2&&params.constructor!=Array){params=$.makeArray(arguments).slice(1);}if(params.constructor!=Array){params=[params];}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n);});return source;};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);this.errorsFor(element).hide();}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element);}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element);}},onclick:function(element){if(element.name in this.submitted)this.element(element);else if(element.parentNode.name in this.submitted)this.element(element.parentNode);},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass);},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass);}},setDefaults:function(settings){$.extend($.validator.defaults,settings);},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=(this.groups={});$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key;});});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value);});function delegate(event){var validator=$.data(this[0].form,"validator"),eventType="on"+event.type.replace(/^validate/,"");validator.settings[eventType]&&validator.settings[eventType].call(validator,this[0]);}$(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",delegate).validateDelegate(":radio, :checkbox, select, option","click",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler);},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid();},checkForm:function(){this.prepareForm();for(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){this.check(elements[i]);}return this.valid();},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result){delete this.invalid[element.name];}else{this.invalid[element.name]=true;}if(!this.numberOfInvalids()){this.toHide=this.toHide.add(this.containers);}this.showErrors();return result;},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]});}this.successList=$.grep(this.successList,function(element){return!(element.name in errors);});}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors();},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass);},numberOfInvalids:function(){return this.objectLength(this.invalid);},objectLength:function(obj){var count=0;for(var i in obj)count++;return count;},hideErrors:function(){this.addWrapper(this.toHide).hide();},valid:function(){return this.size()==0;},size:function(){return this.errorList.length;},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin");}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name;}).length==1&&lastActive;},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true;});},clean:function(selector){return $(selector)[0];},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext);},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.currentElements=$([]);},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers);},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element);},check:function(element){element=this.clean(element);if(this.checkable(element)){element=this.findByName(element.name)[0];}var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);if(result=="dependency-mismatch"){dependencyMismatch=true;continue;}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return;}if(!result){this.formatAndAdd(element,rule);return false;}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id
++", check the '"+rule.method+"' method",e);throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true;},customMetaMessage:function(element,method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta&&meta.messages&&meta.messages[method];},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method]);},findDefined:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined)return arguments[i];}return undefined;},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,method),this.customMetaMessage(element,method),!this.settings.ignoreTitle&&element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>");},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method),theregex=/\$?\{(\d+)\}/g;if(typeof message=="function"){message=message.call(this,rule.parameters,element);}else if(theregex.test(message)){message=jQuery.format(message.replace(theregex,'{$1}'),rule.parameters);}this.errorList.push({message:message,element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message;},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle=toToggle.add(toToggle.parent(this.settings.wrapper));return toToggle;},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);this.showLabel(error.element,error.message);}if(this.errorList.length){this.toShow=this.toShow.add(this.containers);}if(this.settings.success){for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i]);}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();elements[i];i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass);}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show();},validElements:function(){return this.currentElements.not(this.invalidElements());},invalidElements:function(){return $(this.errorList).map(function(){return this.element;});},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message);}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();}if(!this.labelContainer.append(label).length)this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element);}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label);}this.toShow=this.toShow.add(label);},errorsFor:function(element){var name=this.idOrName(element);return this.errors().filter(function(){return $(this).attr('for')==name;});},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name);},checkable:function(element){return/radio|checkbox/i.test(element.type);},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null;});},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return $("option:selected",element).length;case'input':if(this.checkable(element))return this.findByName(element.name).filter(':checked').length;}return value.length;},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true;},dependTypes:{"boolean":function(param,element){return param;},"string":function(param,element){return!!$(param,element.form).length;},"function":function(param,element){return param(element);}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch";},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;this.pending[element.name]=true;}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();this.formSubmitted=false;}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false;}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",{old:null,valid:true,message:this.defaultMessage(element,"remote")});}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className);},classRules:function(element){var rules={};var classes=$(element).attr('class');classes&&$.each(classes.split(' '),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this]);}});return rules;},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value){rules[method]=value;}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength;}return rules;},metadataRules:function(element){if(!$.metadata)return{};var meta=$.data(element.form,'validator').settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata();},staticRules:function(element){var rules={};var validator=$.data(element.form,'validator');if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{};}return rules;},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return;}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;break;case"function":keepRule=val.depends.call(element,element);break;}if(keepRule){rules[prop]=val.param!==undefined?val.param:true;}else{delete rules[prop];}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter;});$.each(['minlength','maxlength','min','max'],function(){if(rules[this]){rules[this]=Number(rules[this]);}});$.each(['rangelength','range'],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])];}});if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max;}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength;}}if(rules.messages){delete rules.messages;}return rules;},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true;});data=transformed;}return data;},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message!=undefined?message:$.validator.messages[name];if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name));}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var val=$(element).val();return val&&val.length>0;case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return $.trim(value).length>0;}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};previous.originalMessage=this.settings.messages[element.name].remote;this.settings.messages[element.name].remote=previous.message;param=typeof param=="string"&&{url:param}||param;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);var data={};data[element.name]=value;$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){validator.settings.messages[element.name].remote=previous.originalMessage;var valid=response===true;if(valid){var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors();}else{var errors={};var message=(previous.message=response||validator.defaultMessage(element,"remote"));errors[element.name]=$.isFunction(message)?message(value):message;validator.showErrors(errors);}previous.valid=valid;validator.stopRequest(element,valid);}},param));return"pending";}else if(this.pending[element.name]){return"pending";}return previous.valid;},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param;},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param;},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||(length>=param[0]&&length<=param[1]);},min:function(value,element,param){return this.optional(element)||value>=param;},max:function(value,element,param){return this.optional(element)||value<=param;},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1]);},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value));},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value);},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(var n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9;}nCheck+=nDigit;bEven=!bEven;}return(nCheck%10)==0;},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,'|'):"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"));},equalTo:function(value,element,param){var target=$(param).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){$(element).valid();});return value==target.val();}}});$.format=$.validator.format;})(jQuery);;(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort();}return(pendingRequests[port]=ajax.apply(this,arguments));}return ajax.apply(this,arguments);};})(jQuery);;(function($){if(!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){this.addEventListener(original,handler,true);},teardown:function(){this.removeEventListener(original,handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};function handler(e){e=$.event.fix(e);e.type=fix;return $.event.handle.call(this,e);}});};$.extend($.fn,{validateDelegate:function(delegate,type,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments);}});}});})(jQuery); \ No newline at end of file
diff --git a/askbot/skins/old/media/js/jquery.validate.pack.js b/askbot/skins/old/media/js/jquery.validate.pack.js
new file mode 100644
index 00000000..49134500
--- /dev/null
+++ b/askbot/skins/old/media/js/jquery.validate.pack.js
@@ -0,0 +1,15 @@
+/*
+ * jQuery validation plug-in 1.5
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2008 Jörn Zaefferer
+ *
+ * $Id: jquery.validate.js 5952 2008-11-25 19:12:30Z joern.zaefferer $
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(7($){$.G($.2J,{1y:7(c){l(!6.E){c&&c.2g&&2T.1q&&1q.4Z("3r 2y, 4B\'t 1y, 6d 3r");8}p b=$.16(6[0],\'u\');l(b){8 b}b=1V $.u(c,6[0]);$.16(6[0],\'u\',b);l(b.q.3s){6.4I("1Y, 4E").1t(".4w").4p(7(){b.35=v});6.30(7(a){l(b.q.2g)a.5X();7 24(){l(b.q.3S){b.q.3S.12(b,b.V);8 H}8 v}l(b.35){b.35=H;8 24()}l(b.K()){l(b.1g){b.1v=v;8 H}8 24()}1c{b.2i();8 H}})}8 b},M:7(){l($(6[0]).2H(\'K\')){8 6.1y().K()}1c{p b=H;p a=$(6[0].K).1y();6.O(7(){b|=a.L(6)});8 b}},4L:7(a){p b={},$L=6;$.O(a.1H(/\\s/),7(){b[6]=$L.1G(6);$L.4G(6)});8 b},1b:7(h,k){p f=6[0];l(h){p i=$.16(f.K,\'u\').q;p d=i.1b;p c=$.u.2s(f);2q(h){1e"2o":$.G(c,$.u.1S(k));d[f.r]=c;l(k.J)i.J[f.r]=$.G(i.J[f.r],k.J);31;1e"63":l(!k){R d[f.r];8 c}p e={};$.O(k.1H(/\\s/),7(a,b){e[b]=c[b];R c[b]});8 e}}p g=$.u.3x($.G({},$.u.40(f),$.u.3W(f),$.u.3T(f),$.u.2s(f)),f);l(g.13){p j=g.13;R g.13;g=$.G({13:j},g)}8 g},Y:7(t){8 6.5A(6.2o(t).5w())}});$.G($.5t[":"],{5p:7(a){8!$.2b(a.T)},5m:7(a){8!!$.2b(a.T)},5i:7(a){8!a.3U}});$.1a=7(c,b){l(P.E==1)8 7(){p a=$.48(P);a.52(c);8 $.1a.1I(6,a)};l(P.E>2&&b.2m!=3A){b=$.48(P).4O(1)}l(b.2m!=3A){b=[b]}$.O(b,7(i,n){c=c.3u(1V 3t("\\\\{"+i+"\\\\}","g"),n)});8 c};$.u=7(b,a){6.q=$.G({},$.u.2D,b);6.V=a;6.3q()};$.G($.u,{2D:{J:{},21:{},1b:{},18:"3l",2B:"4H",2i:v,3k:$([]),2A:$([]),3s:v,3j:[],3h:H,4F:7(a){6.3g=a;l(6.q.4D&&!6.4C){6.q.1U&&6.q.1U.12(6,a,6.q.18);6.1E(a).2v()}},4z:7(a){l(!6.1u(a)&&(a.r Z 6.1j||!6.F(a))){6.L(a)}},4t:7(a){l(a.r Z 6.1j||a==6.4q){6.L(a)}},6n:7(a){l(a.r Z 6.1j)6.L(a)},37:7(a,b){$(a).2p(b)},1U:7(a,b){$(a).36(b)}},6g:7(a){$.G($.u.2D,a)},J:{13:"6e 4k 2H 13.",1R:"I 38 6 4k.",1F:"I N a M 1F 65.",1k:"I N a M 62.",1l:"I N a M 1l.",2a:"I N a M 1l (61).",20:"45 44 42 2E 5T¼5S 5R 2E.",1n:"I N a M 1n.",28:"45 44 42 5N 5M 2E.",1O:"I N 5G 1O",2d:"I N a M 5E 5C 1n.",3P:"I N 3O 5v T 5u.",3L:"I N a T 5q a M 5o.",15:$.1a("I N 3K 5n 2O {0} 2R."),1r:$.1a("I N 5k 5h {0} 2R."),2h:$.1a("I N a T 3E {0} 3R {1} 2R 5c."),27:$.1a("I N a T 3E {0} 3R {1}."),1m:$.1a("I N a T 5a 2O 47 43 3D {0}."),1w:$.1a("I N a T 51 2O 47 43 3D {0}.")},4f:H,4Y:{3q:7(){6.26=$(6.q.2A);6.3C=6.26.E&&6.26||$(6.V);6.2k=$(6.q.3k).2o(6.q.2A);6.1j={};6.4S={};6.1g=0;6.1d={};6.1f={};6.1J();p f=(6.21={});$.O(6.q.21,7(d,c){$.O(c.1H(/\\s/),7(a,b){f[b]=d})});p e=6.q.1b;$.O(e,7(b,a){e[b]=$.u.1S(a)});7 1p(a){p b=$.16(6[0].K,"u");b.q["3z"+a.1o]&&b.q["3z"+a.1o].12(b,6[0])}$(6.V).1p("3y 3w 4N",":2F, :4M, :4K, 23, 4J",1p).1p("4p",":3p, :3o",1p);l(6.q.3n)$(6.V).3m("1f-K.1y",6.q.3n)},K:7(){6.3v();$.G(6.1j,6.1z);6.1f=$.G({},6.1z);l(!6.M())$(6.V).2C("1f-K",[6]);6.1h();8 6.M()},3v:7(){6.2G();Q(p i=0,11=(6.1Z=6.11());11[i];i++){6.2n(11[i])}8 6.M()},L:7(a){a=6.2z(a);6.4q=a;6.2N(a);6.1Z=$(a);p b=6.2n(a);l(b){R 6.1f[a.r]}1c{6.1f[a.r]=v}l(!6.3i()){6.14.Y(6.2k)}6.1h();8 b},1h:7(b){l(b){$.G(6.1z,b);6.S=[];Q(p c Z b){6.S.Y({19:b[c],L:6.1X(c)[0]})}6.1i=$.3f(6.1i,7(a){8!(a.r Z b)})}6.q.1h?6.q.1h.12(6,6.1z,6.S):6.3e()},2x:7(){l($.2J.2x)$(6.V).2x();6.1j={};6.2G();6.2W();6.11().36(6.q.18)},3i:7(){8 6.2c(6.1f)},2c:7(a){p b=0;Q(p i Z a)b++;8 b},2W:7(){6.2w(6.14).2v()},M:7(){8 6.3d()==0},3d:7(){8 6.S.E},2i:7(){l(6.q.2i){3c{$(6.3b()||6.S.E&&6.S[0].L||[]).1t(":4A").3a()}39(e){}}},3b:7(){p a=6.3g;8 a&&$.3f(6.S,7(n){8 n.L.r==a.r}).E==1&&a},11:7(){p a=6,2u={};8 $([]).2o(6.V.11).1t(":1Y").1D(":30, :1J, :4y, [4x]").1D(6.q.3j).1t(7(){!6.r&&a.q.2g&&2T.1q&&1q.3l("%o 4v 3K r 4u",6);l(6.r Z 2u||!a.2c($(6).1b()))8 H;2u[6.r]=v;8 v})},2z:7(a){8 $(a)[0]},2t:7(){8 $(6.q.2B+"."+6.q.18,6.3C)},1J:7(){6.1i=[];6.S=[];6.1z={};6.1C=$([]);6.14=$([]);6.1v=H;6.1Z=$([])},2G:7(){6.1J();6.14=6.2t().Y(6.2k)},2N:7(a){6.1J();6.14=6.1E(a)},2n:7(d){d=6.2z(d);l(6.1u(d)){d=6.1X(d.r)[0]}p a=$(d).1b();p c=H;Q(W Z a){p b={W:W,2r:a[W]};3c{p f=$.u.1P[W].12(6,d.T,d,b.2r);l(f=="1T-1Q"){c=v;6m}c=H;l(f=="1d"){6.14=6.14.1D(6.1E(d));8}l(!f){6.4o(d,b);8 H}}39(e){6.q.2g&&2T.1q&&1q.6l("6k 6j 6i 6h L "+d.4n+", 2n 3O \'"+b.W+"\' W");6f e;}}l(c)8;l(6.2c(a))6.1i.Y(d);8 v},4l:7(a,b){l(!$.1x)8;p c=6.q.33?$(a).1x()[6.q.33]:$(a).1x();8 c&&c.J&&c.J[b]},4j:7(a,b){p m=6.q.J[a];8 m&&(m.2m==4i?m:m[b])},4h:7(){Q(p i=0;i<P.E;i++){l(P[i]!==2l)8 P[i]}8 2l},2j:7(a,b){8 6.4h(6.4j(a.r,b),6.4l(a,b),!6.q.3h&&a.6c||2l,$.u.J[b],"<4g>6b: 6a 19 68 Q "+a.r+"</4g>")},4o:7(b,a){p c=6.2j(b,a.W);l(17 c=="7")c=c.12(6,a.2r,b);6.S.Y({19:c,L:b});6.1z[b.r]=c;6.1j[b.r]=c},2w:7(a){l(6.q.1W)a.Y(a.64(6.q.1W));8 a},3e:7(){Q(p i=0;6.S[i];i++){p a=6.S[i];6.q.37&&6.q.37.12(6,a.L,6.q.18);6.2Z(a.L,a.19)}l(6.S.E){6.1C.Y(6.2k)}l(6.q.1s){Q(p i=0;6.1i[i];i++){6.2Z(6.1i[i])}}l(6.q.1U){Q(p i=0,11=6.4e();11[i];i++){6.q.1U.12(6,11[i],6.q.18)}}6.14=6.14.1D(6.1C);6.2W();6.2w(6.1C).4d()},4e:7(){8 6.1Z.1D(6.4c())},4c:7(){8 $(6.S).4b(7(){8 6.L})},2Z:7(a,c){p b=6.1E(a);l(b.E){b.36().2p(6.q.18);b.1G("4a")&&b.49(c)}1c{b=$("<"+6.q.2B+"/>").1G({"Q":6.2Y(a),4a:v}).2p(6.q.18).49(c||"");l(6.q.1W){b=b.2v().4d().60("<"+6.q.1W+">").5Z()}l(!6.26.5Y(b).E)6.q.46?6.q.46(b,$(a)):b.5W(a)}l(!c&&6.q.1s){b.2F("");17 6.q.1s=="1B"?b.2p(6.q.1s):6.q.1s(b)}6.1C.Y(b)},1E:7(a){8 6.2t().1t("[@Q=\'"+6.2Y(a)+"\']")},2Y:7(a){8 6.21[a.r]||(6.1u(a)?a.r:a.4n||a.r)},1u:7(a){8/3p|3o/i.U(a.1o)},1X:7(d){p c=6.V;8 $(5V.5U(d)).4b(7(a,b){8 b.K==c&&b.r==d&&b||41})},1K:7(a,b){2q(b.3Z.3Y()){1e\'23\':8 $("3X:2y",b).E;1e\'1Y\':l(6.1u(b))8 6.1X(b.r).1t(\':3U\').E}8 a.E},3B:7(b,a){8 6.2X[17 b]?6.2X[17 b](b,a):v},2X:{"5Q":7(b,a){8 b},"1B":7(b,a){8!!$(b,a.K).E},"7":7(b,a){8 b(a)}},F:7(a){8!$.u.1P.13.12(6,$.2b(a.T),a)&&"1T-1Q"},3V:7(a){l(!6.1d[a.r]){6.1g++;6.1d[a.r]=v}},4s:7(a,b){6.1g--;l(6.1g<0)6.1g=0;R 6.1d[a.r];l(b&&6.1g==0&&6.1v&&6.K()){$(6.V).30()}1c l(!b&&6.1g==0&&6.1v){$(6.V).2C("1f-K",[6])}},2f:7(a){8 $.16(a,"2f")||$.16(a,"2f",5O={2K:41,M:v,19:6.2j(a,"1R")})}},1M:{13:{13:v},1F:{1F:v},1k:{1k:v},1l:{1l:v},2a:{2a:v},20:{20:v},1n:{1n:v},28:{28:v},1O:{1O:v},2d:{2d:v}},3Q:7(a,b){a.2m==4i?6.1M[a]=b:$.G(6.1M,a)},3W:7(b){p a={};p c=$(b).1G(\'5K\');c&&$.O(c.1H(\' \'),7(){l(6 Z $.u.1M){$.G(a,$.u.1M[6])}});8 a},3T:7(c){p a={};p d=$(c);Q(W Z $.u.1P){p b=d.1G(W);l(b){a[W]=b}}l(a.15&&/-1|5J|5H/.U(a.15)){R a.15}8 a},40:7(a){l(!$.1x)8{};p b=$.16(a.K,\'u\').q.33;8 b?$(a).1x()[b]:$(a).1x()},2s:7(b){p a={};p c=$.16(b.K,\'u\');l(c.q.1b){a=$.u.1S(c.q.1b[b.r])||{}}8 a},3x:7(d,e){$.O(d,7(c,b){l(b===H){R d[c];8}l(b.2V||b.2e){p a=v;2q(17 b.2e){1e"1B":a=!!$(b.2e,e.K).E;31;1e"7":a=b.2e.12(e,e);31}l(a){d[c]=b.2V!==2l?b.2V:v}1c{R d[c]}}});$.O(d,7(a,b){d[a]=$.5F(b)?b(e):b});$.O([\'1r\',\'15\',\'1w\',\'1m\'],7(){l(d[6]){d[6]=2U(d[6])}});$.O([\'2h\',\'27\'],7(){l(d[6]){d[6]=[2U(d[6][0]),2U(d[6][1])]}});l($.u.4f){l(d.1w&&d.1m){d.27=[d.1w,d.1m];R d.1w;R d.1m}l(d.1r&&d.15){d.2h=[d.1r,d.15];R d.1r;R d.15}}l(d.J){R d.J}8 d},1S:7(a){l(17 a=="1B"){p b={};$.O(a.1H(/\\s/),7(){b[6]=v});a=b}8 a},5D:7(c,a,b){$.u.1P[c]=a;$.u.J[c]=b;l(a.E<3){$.u.3Q(c,$.u.1S(c))}},1P:{13:7(b,c,a){l(!6.3B(a,c))8"1T-1Q";2q(c.3Z.3Y()){1e\'23\':p d=$("3X:2y",c);8 d.E>0&&(c.1o=="23-5B"||($.2S.2Q&&!(d[0].5z[\'T\'].5y)?d[0].2F:d[0].T).E>0);1e\'1Y\':l(6.1u(c))8 6.1K(b,c)>0;5x:8 $.2b(b).E>0}},1R:7(e,h,d){l(6.F(h))8"1T-1Q";p g=6.2f(h);l(!6.q.J[h.r])6.q.J[h.r]={};6.q.J[h.r].1R=17 g.19=="7"?g.19(e):g.19;d=17 d=="1B"&&{1k:d}||d;l(g.2K!==e){g.2K=e;p i=6;6.3V(h);p f={};f[h.r]=e;$.2P($.G(v,{1k:d,3N:"2L",3M:"1y"+h.r,5s:"5r",16:f,1s:7(a){l(a){p b=i.1v;i.2N(h);i.1v=b;i.1i.Y(h);i.1h()}1c{p c={};c[h.r]=a||i.2j(h,"1R");i.1h(c)}g.M=a;i.4s(h,a)}},d));8"1d"}1c l(6.1d[h.r]){8"1d"}8 g.M},1r:7(b,c,a){8 6.F(c)||6.1K(b,c)>=a},15:7(b,c,a){8 6.F(c)||6.1K(b,c)<=a},2h:7(b,d,a){p c=6.1K(b,d);8 6.F(d)||(c>=a[0]&&c<=a[1])},1w:7(b,c,a){8 6.F(c)||b>=a},1m:7(b,c,a){8 6.F(c)||b<=a},27:7(b,c,a){8 6.F(c)||(b>=a[0]&&b<=a[1])},1F:7(a,b){8 6.F(b)||/^((([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^X`{\\|}~]|[\\A-\\C\\w-\\B\\x-\\y])+(\\.([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^X`{\\|}~]|[\\A-\\C\\w-\\B\\x-\\y])+)*)|((\\3J)((((\\29|\\1N)*(\\2M\\3I))?(\\29|\\1N)+)?(([\\3H-\\5l\\3G\\3F\\5j-\\5I\\4r]|\\5g|[\\5L-\\5f]|[\\5e-\\5d]|[\\A-\\C\\w-\\B\\x-\\y])|(\\\\([\\3H-\\1N\\3G\\3F\\2M-\\4r]|[\\A-\\C\\w-\\B\\x-\\y]))))*(((\\29|\\1N)*(\\2M\\3I))?(\\29|\\1N)+)?(\\3J)))@((([a-z]|\\d|[\\A-\\C\\w-\\B\\x-\\y])|(([a-z]|\\d|[\\A-\\C\\w-\\B\\x-\\y])([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])*([a-z]|\\d|[\\A-\\C\\w-\\B\\x-\\y])))\\.)+(([a-z]|[\\A-\\C\\w-\\B\\x-\\y])|(([a-z]|[\\A-\\C\\w-\\B\\x-\\y])([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])*([a-z]|[\\A-\\C\\w-\\B\\x-\\y])))\\.?$/i.U(a)},1k:7(a,b){8 6.F(b)||/^(5P?|5b):\\/\\/(((([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])|(%[\\1L-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\A-\\C\\w-\\B\\x-\\y])|(([a-z]|\\d|[\\A-\\C\\w-\\B\\x-\\y])([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])*([a-z]|\\d|[\\A-\\C\\w-\\B\\x-\\y])))\\.)+(([a-z]|[\\A-\\C\\w-\\B\\x-\\y])|(([a-z]|[\\A-\\C\\w-\\B\\x-\\y])([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])*([a-z]|[\\A-\\C\\w-\\B\\x-\\y])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])|(%[\\1L-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])|(%[\\1L-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])|(%[\\1L-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|[\\59-\\58]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|X|~|[\\A-\\C\\w-\\B\\x-\\y])|(%[\\1L-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.U(a)},1l:7(a,b){8 6.F(b)||!/57|56/.U(1V 55(a))},2a:7(a,b){8 6.F(b)||/^\\d{4}[\\/-]\\d{1,2}[\\/-]\\d{1,2}$/.U(a)},20:7(a,b){8 6.F(b)||/^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d?\\d?$/.U(a)},1n:7(a,b){8 6.F(b)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)(?:\\.\\d+)?$/.U(a)},28:7(a,b){8 6.F(b)||/^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.U(a)},1O:7(a,b){8 6.F(b)||/^\\d+$/.U(a)},2d:7(b,e){l(6.F(e))8"1T-1Q";l(/[^0-9-]+/.U(b))8 H;p a=0,d=0,22=H;b=b.3u(/\\D/g,"");Q(n=b.E-1;n>=0;n--){p c=b.54(n);p d=53(c,10);l(22){l((d*=2)>9)d-=9}a+=d;22=!22}8(a%10)==0},3L:7(b,c,a){a=17 a=="1B"?a:"66|67?g|50";8 6.F(c)||b.69(1V 3t(".("+a+")$","i"))},3P:7(b,c,a){8 b==$(a).4X()}}})})(2I);(7($){p c=$.2P;p d={};$.2P=7(a){a=$.G(a,$.G({},$.4W,a));p b=a.3M;l(a.3N=="2L"){l(d[b]){d[b].2L()}8(d[b]=c.1I(6,P))}8 c.1I(6,P)}})(2I);(7($){$.O({3a:\'3y\',4V:\'3w\'},7(b,a){$.1A.32[a]={4U:7(){l($.2S.2Q)8 H;6.4T(b,$.1A.32[a].34,v)},4R:7(){l($.2S.2Q)8 H;6.4Q(b,$.1A.32[a].34,v)},34:7(e){P[0]=$.1A.38(e);P[0].1o=a;8 $.1A.24.1I(6,P)}}});$.G($.2J,{1p:7(d,e,c){8 6.3m(d,7(a){p b=$(a.4m);l(b.2H(e)){8 c.1I(b,P)}})},4P:7(a,b){8 6.2C(a,[$.1A.38({1o:a,4m:b})])}})})(2I);',62,396,'||||||this|function|return|||||||||||||if||||var|settings|name|||validator|true|uF900|uFDF0|uFFEF||u00A0|uFDCF|uD7FF||length|optional|extend|false|Please|messages|form|element|valid|enter|each|arguments|for|delete|errorList|value|test|currentForm|method|_|push|in||elements|call|required|toHide|maxlength|data|typeof|errorClass|message|format|rules|else|pending|case|invalid|pendingRequest|showErrors|successList|submitted|url|date|max|number|type|delegate|console|minlength|success|filter|checkable|formSubmitted|min|metadata|validate|errorMap|event|string|toShow|not|errorsFor|email|attr|split|apply|reset|getLength|da|classRuleSettings|x09|digits|methods|mismatch|remote|normalizeRule|dependency|unhighlight|new|wrapper|findByName|input|currentElements|dateDE|groups|bEven|select|handle||labelContainer|range|numberDE|x20|dateISO|trim|objectLength|creditcard|depends|previousValue|debug|rangelength|focusInvalid|defaultMessage|containers|undefined|constructor|check|add|addClass|switch|parameters|staticRules|errors|rulesCache|hide|addWrapper|resetForm|selected|clean|errorLabelContainer|errorElement|triggerHandler|defaults|ein|text|prepareForm|is|jQuery|fn|old|abort|x0d|prepareElement|than|ajax|msie|characters|browser|window|Number|param|hideErrors|dependTypes|idOrName|showLabel|submit|break|special|meta|handler|cancelSubmit|removeClass|highlight|fix|catch|focus|findLastActive|try|size|defaultShowErrors|grep|lastActive|ignoreTitle|numberOfInvalids|ignore|errorContainer|error|bind|invalidHandler|checkbox|radio|init|nothing|onsubmit|RegExp|replace|checkForm|focusout|normalizeRules|focusin|on|Array|depend|errorContext|to|between|x0c|x0b|x01|x0a|x22|no|accept|port|mode|the|equalTo|addClassRules|and|submitHandler|attributeRules|checked|startRequest|classRules|option|toLowerCase|nodeName|metadataRules|null|Sie|equal|geben|Bitte|errorPlacement|or|makeArray|html|generated|map|invalidElements|show|validElements|autoCreateRanges|strong|findDefined|String|customMessage|field|customMetaMessage|target|id|formatAndAdd|click|lastElement|x7f|stopRequest|onkeyup|assigned|has|cancel|disabled|image|onfocusout|visible|can|blockFocusCleanup|focusCleanup|button|onfocusin|removeAttr|label|find|textarea|file|removeAttrs|password|keyup|slice|triggerEvent|removeEventListener|teardown|valueCache|addEventListener|setup|blur|ajaxSettings|val|prototype|warn|gif|greater|unshift|parseInt|charAt|Date|NaN|Invalid|uF8FF|uE000|less|ftp|long|x7e|x5d|x5b|x21|least|unchecked|x0e|at|x08|filled|more|extension|blank|with|json|dataType|expr|again|same|get|default|specified|attributes|setArray|multiple|card|addMethod|credit|isFunction|only|524288|x1f|2147483647|class|x23|Nummer|eine|previous|https|boolean|Datum|ltiges|gÃ|getElementsByName|document|insertAfter|preventDefault|append|parent|wrap|ISO|URL|remove|parents|address|png|jpe|defined|match|No|Warning|title|returning|This|throw|setDefaults|checking|when|occured|exception|log|continue|onclick'.split('|'),0,{})) \ No newline at end of file
diff --git a/askbot/skins/old/media/js/live_search.js b/askbot/skins/old/media/js/live_search.js
new file mode 100644
index 00000000..bf855e60
--- /dev/null
+++ b/askbot/skins/old/media/js/live_search.js
@@ -0,0 +1,613 @@
+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 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();
+ search_url = askbot['urls']['questions'] + 'reset_query:true/';
+ reset_query(sortMethod);
+ }
+ );
+ query.after(x_button);
+ }
+ } else {
+ $('input[name=reset_query]').remove();
+ query.attr('class', 'searchInput');
+ }
+ };
+
+ 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';
+ }
+ };
+
+ 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();
+ }
+ }
+ };
+
+ 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 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 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;';
+ }
+ output += '</span>' +
+ '<div>' + word + '</div>' +
+ '</div>';
+ return output;
+ };
+
+ var render_title = function(result){
+ return '<h2>' +
+ '<a title="' + result['summary'] + '" ' +
+ 'href="' +
+ askbot['urls']['question_url_template']
+ .replace('{{QuestionID}}', result['id']) +
+ '">' +
+ result['title'] +
+ '</a>' +
+ '</h2>';
+ };
+
+ 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> ';
+ }
+ }
+ else {
+ return '';
+ }
+ };
+
+ 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 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');
+ }
+ 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 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) +
+ }
+ user_html += '</div>';
+ return user_html;
+ };
+
+ var render_tag = function(tag_name, linkable, deletable, query_string){
+ var tag = new Tag();
+ tag.setName(tag_name);
+ tag.setDeletable(deletable);
+ tag.setLinkable(linkable);
+ tag.setUrlParams(query_string);
+ return tag.getElement().outerHTML();
+ };
+
+ var render_tags = function(tags, linkable, deletable, query_string){
+ var tags_html = '<ul class="tags">';
+ $.each(tags, function(idx, item){
+ tags_html += render_tag(item, linkable, deletable, query_string);
+ });
+ tags_html += '</ul>';
+ return tags_html;
+ };
+
+ var render_question = function(question, query_string){
+ var entry_html =
+ '<div class="short-summary">' +
+ '<div class="counts">' +
+ render_counter(
+ question['views'],
+ question['views_word'],
+ 'views',
+ question['views_class']
+ ) +
+ render_counter(
+ question['answers'],
+ question['answers_word'],
+ 'answers',
+ question['answers_class']
+ ) +
+ render_counter(
+ question['votes'],
+ question['votes_word'],
+ 'votes',
+ question['votes_class']
+ ) +
+ '<div style="clear:both"></div>' +
+ render_user_info(question) +
+ '</div>' +
+ render_title(question) +
+ render_tags(question['tags'], true, false, query_string) +
+ '</div>';
+ return entry_html;
+ };
+
+ var render_question_list = function(questions, query_string){
+ var output = '';
+ for (var i=0; i<questions.length; i++){
+ output += render_question(questions[i], query_string);
+ }
+ return output;
+ };
+
+ 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 html = '';
+ for (var i=0; i<tags.length; i++){
+ html += render_tag(tags[i]['name'], true, false, query_string);
+ 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 set_question_count = function(count_html){
+ $('#question-count').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 search_tags = $('#search-tags');
+ search_tags.children().remove();
+ var tags_html = '';
+ $.each(tags, function(idx, tag_name){
+ var tag = new Tag();
+ tag.setName(tag_name);
+ tag.setDeletable(true);
+ tag.setLinkable(false);
+ tag.setDeleteHandler(
+ function(){
+ remove_search_tag(tag_name);
+ }
+ );
+ search_tags.append(tag.getElement());
+ });
+ };
+
+ var create_relevance_tab = function(query_string){
+ relevance_tab = $('<a></a>');
+ href = '/questions/' + replace_in_url(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 replace_in_url = function (query_string, param){
+ values = param.split(':')
+ type = values[0]
+ value = values[1]
+ params = query_string.split('/')
+ url=""
+
+ for (var i = 0; i < params.length; i++){
+ if (params[i] !== ''){
+ if (params[i].substring(0, type.length) == type){
+ url += param + '/'
+ }
+ else{
+ url += params[i] + '/'
+ }
+ }
+ }
+
+ return url
+
+ }
+
+ var remove_from_url = function (query_string, type){
+ params = query_string.split('/')
+ url=""
+ for (var i = 0; i < params.length; i++){
+ if (params[i] !== ''){
+ if (params[i].substring(0, type.length) !== type){
+ url += params[i] + '/'
+ }
+ }
+ }
+ return url
+ }
+
+ var set_section_tabs = function(query_string){
+ var tabs = $('#section_tabs>a');
+ tabs.each(function(index, element){
+ var tab = $(element);
+ var tab_name = tab.attr('id').replace(/^by_/,'');
+ href = '/questions/' + replace_in_url(query_string, 'section:'+tab_name)
+ tab.attr(
+ 'href',
+ href
+ );
+ });
+ };
+
+ 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){
+ href = '/questions/' + replace_in_url(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);
+ var name = bits[0];
+ var sense = bits[1];//sense of sort
+ var antisense = (sense == 'asc' ? 'desc':'asc');
+ var arrow = (sense == 'asc' ? ' &#9650;':' &#9660;');
+ var active_tab = $('#by_' + name);
+ active_tab.attr('class', 'on');
+ active_tab.attr('title', sortButtonData[name][antisense + '_tooltip']);
+ active_tab.html(sortButtonData[name]['label'] + arrow);
+ };
+
+ 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(query_string);
+ $('#sort_tabs>span').after(relevance_tab);
+ }
+ }
+ else {
+ if (relevance_tab.length > 0){
+ relevance_tab.remove();
+ }
+ }
+ };
+
+ var remove_search_tag = function(tag_name){
+ $.ajax({
+ url: askbot['urls']['questions']+'remove_tag:'+escape(tag_name)+'/',
+ dataType: 'json',
+ success: render_result,
+ complete: try_again
+ });
+ };
+
+ var activate_search_tags = function(){
+ var search_tags = $('#search-tags .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_ask_page_result = function(data, text_status, xhr){
+ var container = $('#' + q_list_sel);
+ container.fadeOut(200, function() {
+ container.children().remove();
+ if (data.length > 5){
+ container.css('overflow-y', 'scroll');
+ container.css('height', '120px');
+ } else {
+ container.css('height', data.length * 24 + 'px');
+ container.css('overflow-y', 'hidden');
+ }
+ $.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.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(render_question_list(data['questions'], data['query_string']));
+ //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'], data['query_string']);
+ render_relevance_sort_tab(data['query_string']);
+ set_active_sort_tab(sortMethod, data['query_string']);
+ set_section_tabs(data['query_string']);
+ query.focus();
+
+ //show new div with a fadeIn effect
+ old_list.fadeOut(200, function() {
+ 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;
+ }
+
+ 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 = '';
+ }
+
+ var refresh_main_page = function(){
+ $.ajax({
+ url: askbot['urls']['questions'],
+ data: {preserve_state: true},
+ dataType: 'json',
+ success: render_main_page_result
+ });
+ };
+
+ return {
+ refresh: function(){
+ query = $('input#keywords');
+ refresh_main_page();
+ },
+ init: function(mode, query_string){
+ 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';
+ }
+ }
+ search_url = askbot['urls']['questions']; //resetting search_url every times
+ params = query_string.split('/')
+ for (var i = 0; i < params.length; i++){
+ if (params[i] !== ''){
+ if (params[i].substring(0, 5) == "sort:"){ //change the sort method
+ search_url += 'sort:'+sortMethod+'/'
+ search_url += 'query:'+ cur_text.split(' ').join('+') + '/' //we add the query here
+ }
+ else{
+ search_url += params[i] + '/';
+ }
+ }
+ }
+ //search_url = '/questions/'+search_url
+ send_query(cur_text, sortMethod);
+ };
+ restart_query = function() {
+ reset_sort_method();
+ refresh_x_button();
+ search_url = askbot['urls']['questions'] + 'reset_query:true/';
+ 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;
+ }
+ };
+
+};
diff --git a/askbot/skins/old/media/js/output-words.html b/askbot/skins/old/media/js/output-words.html
new file mode 100644
index 00000000..8ea5f314
--- /dev/null
+++ b/askbot/skins/old/media/js/output-words.html
@@ -0,0 +1,49 @@
+<!--
+
+ @desc Word checker
+ Tests the JavaScript-side i18n translation arrays for completeness
+ and generates an empty template containing all the keys
+ for new translations.
+
+ Needs output-words.js and other JavaScript files shipped with Askbot.
+
+ @author Pekka Gaiser <post@pekkagaiser.com>
+ @package Part of the ASKBOT project <www.askbot.org>
+ @license Published with NO WARRANTY WHATSOEVER
+ under the same license as the Askbot project.
+ @version First release, May 7th 2010
+
+
+--><html>
+<head>
+
+<title>Translation check</title>
+
+<style type="text/css">
+
+ body { margin: 16px; color: navy}
+
+ table.languages td.language { width: 40px; padding-top: 4px; padding-bottom: 4px; text-align: center }
+ table.languages td.okay { background-color: lightgreen }
+ table.languages td.missing { background-color: orange }
+
+ div.column { width: 49%; float: left; padding-bottom: 64px }
+
+</style>
+
+<script type="text/javascript">i18nLang = "De";</script>
+<script type="text/javascript" src="jquery-1.2.6.js"></script>
+<script type="text/javascript" src="i18n.js"></script>
+<script type="text/javascript" src="output-words.js"></script>
+
+
+</head>
+<body>
+
+ <script type="text/javascript">
+ output();
+ </script>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/askbot/skins/old/media/js/output-words.js b/askbot/skins/old/media/js/output-words.js
new file mode 100644
index 00000000..41e25651
--- /dev/null
+++ b/askbot/skins/old/media/js/output-words.js
@@ -0,0 +1,97 @@
+/*
+
+ @desc Word checker
+ Tests the JavaScript-side i18n translation arrays for completeness
+ and generates an empty template containing all the keys
+ for new translations.
+
+ Is included by output-words.html.
+
+ @author Pekka Gaiser <post@pekkagaiser.com>
+ @package Part of the ASKBOT project <www.askbot.org>
+ @license Published with NO WARRANTY WHATSOEVER
+ under the same license as the Askbot project.
+ @version First release, May 7th 2010
+
+*/
+
+
+function output()
+ {
+
+ document.write("<div class='column'><h1>Translation check</h1><table class='languages'>");
+
+ var allKeys = new Array();
+
+
+ for (var key in i18n)
+ {
+ if(!i18n.hasOwnProperty(key)) continue;
+
+ for (var word in i18n[key])
+ {
+ if(!i18n[key].hasOwnProperty(word)) continue;
+
+ if (jQuery.inArray(word, allKeys) == -1)
+ allKeys.push(word);
+
+ }
+ }
+
+
+ // Output all keys
+ for (var key in allKeys.sort())
+ {
+
+ document.write("<tr><td>");
+ document.write(allKeys[key]);
+ document.write("</td><td>");
+
+ // Check word in all languages
+ for (var language in i18n)
+ {
+ if(!i18n.hasOwnProperty(language)) continue;
+
+ if ((!i18n[language][allKeys[key]]) || (i18n[language][allKeys[key]] == ""))
+ document.write("<td class='language missing'>"+language+"</td>");
+ else
+ document.write("<td class='language okay' title='"+escape(i18n[language][allKeys[key]])+"'>"+language+"</td>");
+
+ escape(i18n[language][key])
+
+ }
+
+ document.write("</tr>");
+
+ }
+
+ document.write("</table></div><div class='column'>");
+
+ // Translation template
+
+ document.write("<h1>Template for new translation</h1>");
+ document.write("<textarea style='width: 100%; height: 600px'>");
+ document.write("// Note that the words ending with '/' (e.g. 'questions/') are directory names\n");
+ document.write("// And need to be identical with the directory names\n");
+ document.write("// in the basic server-side translation\n\n");
+
+
+ document.write("var i18nXY = {\n");
+
+ // Output all words
+ for (var key in allKeys.sort())
+ {
+
+ document.write(" '"+allKeys[key]+"': '', \n");
+
+ }
+
+ document.write(" 'delete_this': ''\n}"); // To prevent trailing comma
+ document.write("</textarea>");
+
+ document.write("</div>");
+
+
+ }
+
+
diff --git a/askbot/skins/old/media/js/post.js b/askbot/skins/old/media/js/post.js
new file mode 100644
index 00000000..260d081e
--- /dev/null
+++ b/askbot/skins/old/media/js/post.js
@@ -0,0 +1,1665 @@
+/*
+Scripts for cnprog.com
+Project Name: Lanai
+All Rights Resevred 2008. CNPROG.COM
+*/
+var lanai =
+{
+ /**
+ * Finds any <pre><code></code></pre> tags which aren't registered for
+ * pretty printing, adds the appropriate class name and invokes prettify.
+ */
+ highlightSyntax: function(){
+ var styled = false;
+ $("pre code").parent().each(function(){
+ if (!$(this).hasClass('prettyprint')){
+ $(this).addClass('prettyprint');
+ styled = true;
+ }
+ });
+
+ if (styled){
+ prettyPrint();
+ }
+ }
+};
+
+function appendLoader(element) {
+ element.append('<img class="ajax-loader" ' +
+ 'src="' + mediaUrl("media/images/indicator.gif") + '" title="' +
+ $.i18n._('loading...') +
+ '" alt="' +
+ $.i18n._('loading...') +
+ '" />');
+}
+
+function removeLoader() {
+ $("img.ajax-loader").remove();
+}
+
+function setSubmitButtonDisabled(form, isDisabled) {
+ form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : "");
+}
+
+function enableSubmitButton(form) {
+ setSubmitButtonDisabled(form, false);
+}
+
+function disableSubmitButton(form) {
+ setSubmitButtonDisabled(form, true);
+}
+
+function setupFormValidation(form, validationRules, validationMessages, onSubmitCallback) {
+ enableSubmitButton(form);
+ form.validate({
+ debug: true,
+ rules: (validationRules ? validationRules : {}),
+ messages: (validationMessages ? validationMessages : {}),
+ errorElement: "span",
+ errorClass: "form-error",
+ errorPlacement: function(error, element) {
+ var span = element.next().find("span.form-error");
+ if (span.length === 0) {
+ span = element.parent().find("span.form-error");
+ if (span.length === 0){
+ //for resizable textarea
+ var element_id = element.attr('id');
+ span = $("label[for='" + element_id + "']");
+ }
+ }
+ span.replaceWith(error);
+ },
+ submitHandler: function(form_dom) {
+ disableSubmitButton($(form_dom));
+
+ if (onSubmitCallback){
+ onSubmitCallback();
+ }
+ else{
+ form_dom.submit();
+ }
+ }
+ });
+}
+
+var validateTagLength = function(value){
+ var tags = getUniqueWords(value);
+ var are_tags_ok = true;
+ $.each(tags, function(index, value){
+ if (value.length > askbot['settings']['maxTagLength']){
+ are_tags_ok = false;
+ }
+ });
+ return are_tags_ok;
+};
+var validateTagCount = function(value){
+ var tags = getUniqueWords(value);
+ return (tags.length <= askbot['settings']['maxTagsPerPost']);
+};
+
+$.validator.addMethod('limit_tag_count', validateTagCount);
+$.validator.addMethod('limit_tag_length', validateTagLength);
+
+var CPValidator = function(){
+ return {
+ getQuestionFormRules : function(){
+ return {
+ tags: {
+ required: true,
+ maxlength: 105,
+ limit_tag_count: true,
+ limit_tag_length: true
+ },
+ text: {
+ required: true,
+ minlength: 10
+ }
+ /*title: {
+ required: true,
+ minlength: 10
+ }*/
+ };
+ },
+ getQuestionFormMessages: function(){
+ return {
+ tags: {
+ required: " " + $.i18n._('tags cannot be empty'),
+ maxlength: askbot['messages']['tagLimits'],
+ limit_tag_count: askbot['messages']['maxTagsPerPost'],
+ limit_tag_length: askbot['messages']['maxTagLength']
+ },
+ text: {
+ required: " " + $.i18n._('content cannot be empty'),
+ minlength: $.i18n._('content minchars').replace('{0}', 10)
+ },
+ title: {
+ required: " " + $.i18n._('please enter title'),
+ minlength: $.i18n._('title minchars').replace('{0}', 10)
+ }
+ };
+ }
+ };
+}();
+
+/**
+ * @constructor
+ * @extends {SimpleControl}
+ * @param {Comment} comment to upvote
+ */
+var CommentVoteButton = function(comment){
+ SimpleControl.call(this);
+ /**
+ * @param {Comment}
+ */
+ this._comment = comment;
+ /**
+ * @type {boolean}
+ */
+ this._voted = false;
+ /**
+ * @type {number}
+ */
+ this._score = 0;
+};
+inherits(CommentVoteButton, SimpleControl);
+/**
+ * @param {number} score
+ */
+CommentVoteButton.prototype.setScore = function(score){
+ this._score = score;
+ if (this._element){
+ this._element.html(score);
+ }
+};
+/**
+ * @param {boolean} voted
+ */
+CommentVoteButton.prototype.setVoted = function(voted){
+ this._voted = voted;
+ if (this._element){
+ this._element.addClass('upvoted');
+ }
+};
+
+CommentVoteButton.prototype.getVoteHandler = function(){
+ var me = this;
+ var comment = this._comment;
+ return function(){
+ var voted = me._voted;
+ var post_id = me._comment.getId();
+ var data = {
+ cancel_vote: voted ? true:false,
+ post_id: post_id
+ };
+ $.ajax({
+ type: 'POST',
+ data: data,
+ dataType: 'json',
+ url: askbot['urls']['upvote_comment'],
+ cache: false,
+ success: function(data){
+ if (data['success'] == true){
+ me.setScore(data['score']);
+ me.setVoted(true);
+ } else {
+ showMessage(comment.getElement(), data['message'], 'after');
+ }
+ }
+ });
+ };
+};
+
+CommentVoteButton.prototype.decorate = function(element){
+ this._element = element;
+ this.setHandler(this.getVoteHandler());
+
+ var element = this._element;
+ var comment = this._comment;
+ /* can't call comment.getElement() here due
+ * an issue in the getElement() of comment
+ * so use an "illegal" access to comment._element here
+ */
+ comment._element.mouseenter(function(){
+ //outside height may not be known
+ //var height = comment.getElement().height();
+ //element.height(height);
+ element.addClass('hover');
+ });
+ comment._element.mouseleave(function(){
+ element.removeClass('hover');
+ });
+
+};
+
+CommentVoteButton.prototype.createDom = function(){
+ this._element = this.makeElement('div');
+ if (this._score > 0){
+ this._element.html(this._score);
+ }
+ this._element.addClass('upvote');
+ if (this._voted){
+ this._element.addClass('upvoted');
+ }
+ this.decorate(this._element);
+};
+
+/**
+ * legacy Vote class
+ * handles all sorts of vote-like operations
+ */
+var Vote = function(){
+ // All actions are related to a question
+ var questionId;
+ //question slug to build redirect urls
+ var questionSlug;
+ // The object we operate on actually. It can be a question or an answer.
+ var postId;
+ var questionAuthorId;
+ var currentUserId;
+ var answerContainerIdPrefix = 'answer-container-';
+ var voteContainerId = 'vote-buttons';
+ var imgIdPrefixAccept = 'answer-img-accept-';
+ var classPrefixFollow= 'button follow';
+ var classPrefixFollowed= 'button followed';
+ var imgIdPrefixQuestionVoteup = 'question-img-upvote-';
+ var imgIdPrefixQuestionVotedown = 'question-img-downvote-';
+ var imgIdPrefixAnswerVoteup = 'answer-img-upvote-';
+ var imgIdPrefixAnswerVotedown = 'answer-img-downvote-';
+ var divIdFavorite = 'favorite-number';
+ var commentLinkIdPrefix = 'comment-';
+ var voteNumberClass = "vote-number";
+ var offensiveIdPrefixQuestionFlag = 'question-offensive-flag-';
+ var offensiveIdPrefixAnswerFlag = 'answer-offensive-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';
+
+ var acceptAnonymousMessage = $.i18n._('insufficient privilege');
+ var acceptOwnAnswerMessage = $.i18n._('cannot pick own answer as best');
+
+ var pleaseLogin = " <a href='" + askbot['urls']['user_signin']
+ + "?next=" + askbot['urls']['question_url_template']
+ + "'>"
+ + $.i18n._('please login') + "</a>";
+
+ var favoriteAnonymousMessage = $.i18n._('anonymous users cannot follow questions') + pleaseLogin;
+ var subscribeAnonymousMessage = $.i18n._('anonymous users cannot subscribe to questions') + pleaseLogin;
+ var voteAnonymousMessage = $.i18n._('anonymous users cannot vote') + pleaseLogin;
+ //there were a couple of more messages...
+ var offensiveConfirmation = $.i18n._('please confirm offensive');
+ var offensiveAnonymousMessage = $.i18n._('anonymous users cannot flag offensive posts') + pleaseLogin;
+ var removeConfirmation = $.i18n._('confirm delete');
+ var removeAnonymousMessage = $.i18n._('anonymous users cannot delete/undelete') + pleaseLogin;
+ var recoveredMessage = $.i18n._('post recovered');
+ var deletedMessage = $.i18n._('post deleted');
+
+ var VoteType = {
+ acceptAnswer : 0,
+ questionUpVote : 1,
+ questionDownVote : 2,
+ favorite : 4,
+ answerUpVote: 5,
+ answerDownVote:6,
+ offensiveQuestion : 7,
+ offensiveAnswer:8,
+ removeQuestion: 9,
+ removeAnswer:10,
+ questionSubscribeUpdates:11,
+ questionUnsubscribeUpdates:12
+ };
+
+ var getFavoriteButton = function(){
+ var favoriteButton = 'div.'+ voteContainerId +' a[class='+ classPrefixFollow +']';
+ favoriteButton += ', div.'+ voteContainerId +' a[class='+ classPrefixFollowed +']';
+ return $(favoriteButton);
+ };
+ var getFavoriteNumber = function(){
+ var favoriteNumber = '#'+ divIdFavorite ;
+ return $(favoriteNumber);
+ };
+ var getQuestionVoteUpButton = function(){
+ var questionVoteUpButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixQuestionVoteup +']';
+ return $(questionVoteUpButton);
+ };
+ var getQuestionVoteDownButton = function(){
+ var questionVoteDownButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixQuestionVotedown +']';
+ return $(questionVoteDownButton);
+ };
+ var getAnswerVoteUpButtons = function(){
+ var answerVoteUpButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAnswerVoteup +']';
+ return $(answerVoteUpButton);
+ };
+ var getAnswerVoteDownButtons = function(){
+ var answerVoteDownButton = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAnswerVotedown +']';
+ return $(answerVoteDownButton);
+ };
+ var getAnswerVoteUpButton = function(id){
+ var answerVoteUpButton = 'div.'+ voteContainerId +' img[id='+ imgIdPrefixAnswerVoteup + id + ']';
+ return $(answerVoteUpButton);
+ };
+ var getAnswerVoteDownButton = function(id){
+ var answerVoteDownButton = 'div.'+ voteContainerId +' img[id='+ imgIdPrefixAnswerVotedown + id + ']';
+ return $(answerVoteDownButton);
+ };
+
+ var getOffensiveQuestionFlag = function(){
+ var offensiveQuestionFlag = '#question-table span[class='+ offensiveClassFlag +']';
+ return $(offensiveQuestionFlag);
+ };
+
+ var getOffensiveAnswerFlags = function(){
+ var offensiveQuestionFlag = 'div.answer span[class='+ offensiveClassFlag +']';
+ return $(offensiveQuestionFlag);
+ };
+
+ var getremoveQuestionLink = function(){
+ var removeQuestionLink = 'div#question-controls a[id^='+ removeQuestionLinkIdPrefix +']';
+ return $(removeQuestionLink);
+ };
+
+ var getquestionSubscribeUpdatesCheckbox = function(){
+ return $('#' + questionSubscribeUpdates);
+ };
+
+ var getquestionSubscribeSidebarCheckbox= function(){
+ return $('#' + questionSubscribeSidebar);
+ };
+
+ var getremoveAnswersLinks = function(){
+ var removeAnswerLinks = 'div.answer-controls a[id^='+ removeAnswerLinkIdPrefix +']';
+ return $(removeAnswerLinks);
+ };
+
+ var setVoteImage = function(voteType, undo, object){
+ var flag = undo ? "" : "-on";
+ var arrow = (voteType == VoteType.questionUpVote || voteType == VoteType.answerUpVote) ? "up" : "down";
+ object.attr("src", mediaUrl("media/images/vote-arrow-"+ arrow + flag +".png"));
+
+ // if undo voting, then undo the pair of arrows.
+ if(undo){
+ if(voteType == VoteType.questionUpVote || voteType == VoteType.questionDownVote){
+ $(getQuestionVoteUpButton()).attr("src", mediaUrl("media/images/vote-arrow-up.png"));
+ $(getQuestionVoteDownButton()).attr("src", mediaUrl("media/images/vote-arrow-down.png"));
+ }
+ else{
+ $(getAnswerVoteUpButton(postId)).attr("src", mediaUrl("media/images/vote-arrow-up.png"));
+ $(getAnswerVoteDownButton(postId)).attr("src", mediaUrl("media/images/vote-arrow-down.png"));
+ }
+ }
+ };
+
+ var setVoteNumber = function(object, number){
+ var voteNumber = object.parent('div.'+ voteContainerId).find('div.'+ voteNumberClass);
+ $(voteNumber).text(number);
+ };
+
+ var bindEvents = function(){
+ // accept answers
+ if(questionAuthorId == currentUserId){
+ var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']';
+ $(acceptedButtons).unbind('click').click(function(event){
+ Vote.accept($(event.target));
+ });
+ }
+ // set favorite question
+ var favoriteButton = getFavoriteButton();
+ favoriteButton.unbind('click').click(function(event){
+ //Vote.favorite($(event.target));
+ Vote.favorite(favoriteButton);
+ });
+
+ // question vote up
+ var questionVoteUpButton = getQuestionVoteUpButton();
+ questionVoteUpButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.questionUpVote);
+ });
+
+ var questionVoteDownButton = getQuestionVoteDownButton();
+ questionVoteDownButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.questionDownVote);
+ });
+
+ var answerVoteUpButton = getAnswerVoteUpButtons();
+ answerVoteUpButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.answerUpVote);
+ });
+
+ var answerVoteDownButton = getAnswerVoteDownButtons();
+ answerVoteDownButton.unbind('click').click(function(event){
+ Vote.vote($(event.target), VoteType.answerDownVote);
+ });
+
+ getOffensiveQuestionFlag().unbind('click').click(function(event){
+ Vote.offensive(this, VoteType.offensiveQuestion);
+ });
+
+ getOffensiveAnswerFlags().unbind('click').click(function(event){
+ Vote.offensive(this, VoteType.offensiveAnswer);
+ });
+
+ getremoveQuestionLink().unbind('click').click(function(event){
+ Vote.remove(this, VoteType.removeQuestion);
+ });
+
+ getquestionSubscribeUpdatesCheckbox().unbind('click').click(function(event){
+ //despeluchar esto
+ if (this.checked){
+ getquestionSubscribeSidebarCheckbox().attr({'checked': true});
+ Vote.vote($(event.target), VoteType.questionSubscribeUpdates);
+ }
+ else {
+ getquestionSubscribeSidebarCheckbox().attr({'checked': false});
+ Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates);
+ }
+ });
+
+ getquestionSubscribeSidebarCheckbox().unbind('click').click(function(event){
+ if (this.checked){
+ getquestionSubscribeUpdatesCheckbox().attr({'checked': true});
+ Vote.vote($(event.target), VoteType.questionSubscribeUpdates);
+ }
+ else {
+ getquestionSubscribeUpdatesCheckbox().attr({'checked': false});
+ Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates);
+ }
+ });
+
+ getremoveAnswersLinks().unbind('click').click(function(event){
+ Vote.remove(this, VoteType.removeAnswer);
+ });
+ };
+
+ var submit = function(object, voteType, callback) {
+ //this function submits votes
+ $.ajax({
+ type: "POST",
+ cache: false,
+ dataType: "json",
+ url: askbot['urls']['vote_url_template'].replace('{{QuestionID}}', questionId),
+ data: { "type": voteType, "postId": postId },
+ error: handleFail,
+ success: function(data){callback(object, voteType, data);}
+ });
+ };
+
+ var handleFail = function(xhr, msg){
+ alert("Callback invoke error: " + msg);
+ };
+
+ // callback function for Accept Answer action
+ var callback_accept = function(object, voteType, data){
+ if(data.allowed == "0" && data.success == "0"){
+ showMessage(object, acceptAnonymousMessage);
+ }
+ else if(data.allowed == "-1"){
+ 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 +"]");
+ $(answers).removeClass("accepted-answer");
+ 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");
+ }
+ else{
+ showMessage(object, data.message);
+ }
+ };
+
+ var callback_favorite = function(object, voteType, data){
+ if(data.allowed == "0" && data.success == "0"){
+ showMessage(
+ object,
+ favoriteAnonymousMessage.replace(
+ '{{QuestionID}}',
+ questionId).replace(
+ '{{questionSlug}}',
+ ''
+ )
+ );
+ }
+ else if(data.status == "1"){
+ var follow_html = gettext('Follow');
+ object.attr("class", 'button follow');
+ object.html(follow_html);
+ var fav = getFavoriteNumber();
+ fav.removeClass("my-favorite-number");
+ if(data.count === 0){
+ data.count = '';
+ fav.text('');
+ }else{
+ var fmts = ngettext('%s follower', '%s followers', data.count);
+ fav.text(interpolate(fmts, [data.count]));
+ }
+ }
+ else if(data.success == "1"){
+ var followed_html = gettext('<div>Following</div><div class="unfollow">Unfollow</div>');
+ object.html(followed_html);
+ object.attr("class", 'button followed');
+ var fav = getFavoriteNumber();
+ var fmts = ngettext('%s follower', '%s followers', data.count);
+ fav.text(interpolate(fmts, [data.count]));
+ fav.addClass("my-favorite-number");
+ }
+ else{
+ showMessage(object, data.message);
+ }
+ };
+
+ var callback_vote = function(object, voteType, data){
+ if (data.success == '0'){
+ showMessage(object, data.message);
+ return;
+ }
+ else {
+ if (data.status == '1'){
+ setVoteImage(voteType, true, object);
+ }
+ else {
+ setVoteImage(voteType, false, object);
+ }
+ setVoteNumber(object, data.count);
+ if (data.message && data.message.length > 0){
+ showMessage(object, data.message);
+ }
+ return;
+ }
+ //may need to take a look at this again
+ if (data.status == "1"){
+ setVoteImage(voteType, true, object);
+ setVoteNumber(object, data.count);
+ }
+ else if (data.success == "1"){
+ setVoteImage(voteType, false, object);
+ setVoteNumber(object, data.count);
+ if (data.message.length > 0){
+ showMessage(object, data.message);
+ }
+ }
+ };
+
+ var callback_offensive = function(object, voteType, data){
+ //todo: transfer proper translations of these from i18n.js
+ //to django.po files
+ //_('anonymous users cannot flag offensive posts') + pleaseLogin;
+ if (data.success == "1"){
+ $(object).children('span[class=darkred]').text("("+ data.count +")");
+ }
+ else {
+ object = $(object);
+ showMessage(object, data.message)
+ }
+ };
+
+ var callback_remove = function(object, voteType, data){
+ if (data.success == "1"){
+ if (removeActionType == 'delete'){
+ postNode.addClass('deleted');
+ postRemoveLink.innerHTML = $.i18n._('undelete');
+ showMessage(object, deletedMessage);
+ }
+ else if (removeActionType == 'undelete') {
+ postNode.removeClass('deleted');
+ postRemoveLink.innerHTML = $.i18n._('delete');
+ showMessage(object, recoveredMessage);
+ }
+ }
+ else {
+ showMessage(object, data.message)
+ }
+ };
+
+ return {
+ init : function(qId, qSlug, questionAuthor, userId){
+ questionId = qId;
+ questionSlug = qSlug;
+ questionAuthorId = questionAuthor;
+ currentUserId = userId;
+ bindEvents();
+ },
+
+ //accept answer
+ accept: function(object){
+ postId = object.attr("id").substring(imgIdPrefixAccept.length);
+ submit(object, VoteType.acceptAnswer, callback_accept);
+ },
+ //mark question as favorite
+ favorite: function(object){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ showMessage(
+ object,
+ favoriteAnonymousMessage.replace(
+ "{{QuestionID}}",
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ return false;
+ }
+ submit(object, VoteType.favorite, callback_favorite);
+ },
+
+ vote: function(object, voteType){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ if (voteType == VoteType.questionSubscribeUpdates || voteType == VoteType.questionUnsubscribeUpdates){
+ getquestionSubscribeSidebarCheckbox().removeAttr('checked');
+ getquestionSubscribeUpdatesCheckbox().removeAttr('checked');
+ showMessage(object, subscribeAnonymousMessage);
+ }else {
+ showMessage(
+ $(object),
+ voteAnonymousMessage.replace(
+ "{{QuestionID}}",
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ }
+ return false;
+ }
+ // up and downvote processor
+ if (voteType == VoteType.answerUpVote){
+ postId = object.attr("id").substring(imgIdPrefixAnswerVoteup.length);
+ }
+ else if (voteType == VoteType.answerDownVote){
+ postId = object.attr("id").substring(imgIdPrefixAnswerVotedown.length);
+ }
+
+ submit(object, voteType, callback_vote);
+ },
+ //flag offensive
+ offensive: function(object, voteType){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ showMessage(
+ $(object),
+ offensiveAnonymousMessage.replace(
+ "{{QuestionID}}",
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ return false;
+ }
+ if (confirm(offensiveConfirmation)){
+ postId = object.id.substr(object.id.lastIndexOf('-') + 1);
+ submit(object, voteType, callback_offensive);
+ }
+ },
+ //delete question or answer (comments are deleted separately)
+ remove: function(object, voteType){
+ if (!currentUserId || currentUserId.toUpperCase() == "NONE"){
+ showMessage(
+ $(object),
+ removeAnonymousMessage.replace(
+ '{{QuestionID}}',
+ questionId
+ ).replace(
+ '{{questionSlug}}',
+ questionSlug
+ )
+ );
+ return false;
+ }
+ bits = object.id.split('-');
+ postId = bits.pop();/* this seems to be used within submit! */
+ postType = bits.shift();
+
+ var do_proceed = false;
+ if (postType == 'answer'){
+ postNode = $('#answer-container-' + postId);
+ }
+ else if (postType == 'question'){
+ postNode = $('#question-table');
+ }
+ postRemoveLink = object;
+ if (postNode.hasClass('deleted')){
+ removeActionType = 'undelete';
+ do_proceed = true;
+ }
+ else {
+ removeActionType = 'delete';
+ do_proceed = confirm(removeConfirmation);
+ }
+ if (do_proceed) {
+ submit($(object), voteType, callback_remove);
+ }
+ }
+ };
+} ();
+
+var questionRetagger = function(){
+
+ var oldTagsHTML = '';
+ var tagInput = null;
+ var tagsDiv = null;
+ var retagLink = null;
+
+ var restoreEventHandlers = function(){
+ $(document).unbind('click');
+ };
+
+ var cancelRetag = function(){
+ tagsDiv.html(oldTagsHTML);
+ tagsDiv.removeClass('post-retag');
+ tagsDiv.addClass('post-tags');
+ restoreEventHandlers();
+ initRetagger();
+ };
+
+ var render_tag = function(tag_name){
+ //copy-paste from live search!!!
+ var tag = new Tag();
+ tag.setName(tag_name);
+ return tag.getElement().outerHTML();
+ };
+
+ var drawNewTags = function(new_tags){
+ new_tags = new_tags.split(/\s+/);
+ var tags_html = ''
+ $.each(new_tags, function(index, name){
+ tags_html += render_tag(name);
+ });
+ tagsDiv.html(tags_html);
+ };
+
+ var doRetag = function(){
+ $.ajax({
+ type: "POST",
+ url: retagUrl,
+ dataType: "json",
+ data: { tags: getUniqueWords(tagInput.val()).join(' ') },
+ success: function(json) {
+ if (json['success'] === true){
+ new_tags = getUniqueWords(json['new_tags']);
+ oldTagsHtml = '';
+ cancelRetag();
+ drawNewTags(new_tags.join(' '));
+ }
+ else {
+ cancelRetag();
+ showMessage(tagsDiv, json['message']);
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ showMessage(tagsDiv, 'sorry, somethin is not right here');
+ cancelRetag();
+ }
+ });
+ return false;
+ }
+
+ var setupInputEventHandlers = function(input){
+ input.keydown(function(e){
+ if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)){
+ cancelRetag();
+ }
+ });
+ $(document).unbind('click').click(cancelRetag, false);
+ input.click(function(){return false});
+ };
+
+ var createRetagForm = function(old_tags_string){
+ var div = $('<form method="post"></form>');
+ tagInput = $('<input id="retag_tags" type="text" autocomplete="off" name="tags" size="30"/>');
+ //var tagLabel = $('<label for="retag_tags" class="error"></label>');
+ tagInput.val(old_tags_string);
+ //populate input
+ var tagAc = new AutoCompleter({
+ url: askbot['urls']['get_tag_list'],
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: true,
+ maxCacheLength: 100,
+ delay: 10
+ });
+ tagAc.decorate(tagInput);
+ div.append(tagInput);
+ //div.append(tagLabel);
+ setupInputEventHandlers(tagInput);
+
+ //button = $('<input type="submit" />');
+ //button.val($.i18n._('save tags'));
+ //div.append(button);
+ //setupButtonEventHandlers(button);
+ div.validate({//copy-paste from utils.js
+ rules: {
+ tags: {
+ required: true,
+ maxlength: askbot['settings']['maxTagsPerPost'] * askbot['settings']['maxTagLength'],
+ limit_tag_count: true,
+ limit_tag_length: true
+ }
+ },
+ messages: {
+ tags: {
+ required: $.i18n._('tags cannot be empty'),
+ maxlength: askbot['messages']['tagLimits'],
+ limit_tag_count: askbot['messages']['maxTagsPerPost'],
+ limit_tag_length: askbot['messages']['maxTagLength']
+ }
+ },
+ submitHandler: doRetag,
+ errorClass: "retag-error"
+ });
+
+ return div;
+ };
+
+ var getTagsAsString = function(tags_div){
+ var links = tags_div.find('a');
+ var tags_str = '';
+ links.each(function(index, element){
+ if (index === 0){
+ tags_str = $(element).html();
+ }
+ else {
+ tags_str += ' ' + $(element).html();
+ }
+ });
+ return tags_str;
+ };
+
+ var noopHandler = function(){
+ tagInput.focus();
+ return false;
+ };
+
+ var deactivateRetagLink = function(){
+ retagLink.unbind('click').click(noopHandler);
+ retagLink.unbind('keypress').keypress(noopHandler);
+ };
+
+ var startRetag = function(){
+ tagsDiv = $('#question-tags');
+ oldTagsHTML = tagsDiv.html();//save to restore on cancel
+ var old_tags_string = getTagsAsString(tagsDiv);
+ var retag_form = createRetagForm(old_tags_string);
+ tagsDiv.html('');
+ tagsDiv.append(retag_form);
+ tagsDiv.removeClass('post-tags');
+ tagsDiv.addClass('post-retag');
+ tagInput.focus();
+ deactivateRetagLink();
+ return false;
+ };
+
+ var setupClickAndEnterHandler = function(element, callback){
+ element.unbind('click').click(callback);
+ element.unbind('keypress').keypress(function(e){
+ if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)){
+ callback();
+ }
+ });
+ }
+
+ var initRetagger = function(){
+ setupClickAndEnterHandler(retagLink, startRetag);
+ };
+
+ return {
+ init: function(){
+ retagLink = $('#retag');
+ initRetagger();
+ }
+ };
+}();
+
+//constructor for the form
+var EditCommentForm = function(){
+ WrappedElement.call(this);
+ this._comment = null;
+ this._comment_widget = null;
+ this._element = null;
+ this._text = '';
+ this._id = 'edit-comment-form';
+};
+inherits(EditCommentForm, WrappedElement);
+
+EditCommentForm.prototype.getElement = function(){
+ EditCommentForm.superClass_.getElement.call(this);
+ this._textarea.val(this._text);
+ return this._element;
+};
+
+EditCommentForm.prototype.attachTo = function(comment, mode){
+ this._comment = comment;
+ this._type = mode;
+ this._comment_widget = comment.getContainerWidget();
+ this._text = comment.getText();
+ comment.getElement().after(this.getElement());
+ comment.getElement().hide();
+ this._comment_widget.hideButton();
+ if (this._type == 'add'){
+ this._submit_btn.html($.i18n._('add comment'));
+ }
+ else {
+ this._submit_btn.html($.i18n._('save comment'));
+ }
+ this.getElement().show();
+ this.focus();
+ putCursorAtEnd(this._textarea);
+};
+
+EditCommentForm.prototype.getCounterUpdater = function(){
+ //returns event handler
+ var counter = this._text_counter;
+ var handler = function(){
+ var textarea = $(this);
+ var length = textarea.val() ? textarea.val().length : 0;
+ var length1 = maxCommentLength - 100;
+ if (length1 < 0){
+ length1 = Math.round(0.7*maxCommentLength);
+ }
+ var length2 = maxCommentLength - 30;
+ if (length2 < 0){
+ length2 = Math.round(0.9*maxCommentLength);
+ }
+
+ var color = 'maroon';
+ if (length === 0){
+ var feedback = $.i18n._('title minchars').replace('{0}', 10);
+ }
+ else if (length < 10){
+ var feedback = $.i18n._('enter more characters').replace('{0}', 10 - length);
+ }
+ else {
+ color = length > length2 ? "#f00" : length > length1 ? "#f60" : "#999";
+ var feedback = $.i18n._('{0} characters left')
+ .replace('{0}', maxCommentLength - length);
+ }
+ counter.html(feedback).css('color', color);
+ };
+ return handler;
+};
+
+EditCommentForm.prototype.canCancel = function(){
+ if (this._element === null){
+ return true;
+ }
+ var ctext = $.trim(this._textarea.val());
+ if ($.trim(ctext) == $.trim(this._text)){
+ return true;
+ }
+ else if (this.confirmAbandon()){
+ return true;
+ }
+ this.focus();
+ return false;
+};
+
+EditCommentForm.prototype.getCancelHandler = function(){
+ var form = this;
+ return function(){
+ if (form.canCancel()){
+ form.detach();
+ }
+ return false;
+ };
+};
+
+EditCommentForm.prototype.detach = function(){
+ if (this._comment === null){
+ return;
+ }
+ this._comment.getContainerWidget().showButton();
+ if (this._comment.isBlank()){
+ this._comment.dispose();
+ }
+ else {
+ this._comment.getElement().show();
+ }
+ this.reset();
+ this._element = this._element.detach();
+};
+
+EditCommentForm.prototype.createDom = function(){
+ this._element = $('<form></form>');
+ this._element.attr('class', 'post-comments');
+
+ var div = $('<div></div>');
+ this._textarea = $('<textarea></textarea>');
+ this._textarea.attr('id', this._id);
+
+ /*
+ this._help_text = $('<span></span>').attr('class', 'help-text');
+ this._help_text.html(gettext('Markdown is allowed in the comments'));
+ div.append(this._help_text);
+
+ this._help_text = $('<div></div>').attr('class', 'clearfix');
+ div.append(this._help_text);
+ */
+
+ this._element.append(div);
+ div.append(this._textarea);
+ this._text_counter = $('<span></span>').attr('class', 'counter');
+ div.append(this._text_counter);
+ this._submit_btn = $('<button class="submit small"></button>');
+ div.append(this._submit_btn);
+ this._cancel_btn = $('<button class="submit small"></button>');
+ this._cancel_btn.html($.i18n._('cancel'));
+ div.append(this._cancel_btn);
+
+ setupButtonEventHandlers(this._submit_btn, this.getSaveHandler());
+ setupButtonEventHandlers(this._cancel_btn, this.getCancelHandler());
+
+ var update_counter = this.getCounterUpdater();
+ var escape_handler = makeKeyHandler(27, this.getCancelHandler());
+ this._textarea.attr('name', 'comment')
+ .attr('cols', 60)
+ .attr('rows', 5)
+ .attr('maxlength', maxCommentLength)
+ .blur(update_counter)
+ .focus(update_counter)
+ .keyup(update_counter)
+ .keyup(escape_handler);
+ if (askbot['settings']['saveCommentOnEnter']){
+ var save_handler = makeKeyHandler(13, this.getSaveHandler());
+ this._textarea.keydown(save_handler);
+ }
+ this._textarea.val(this._text);
+};
+
+EditCommentForm.prototype.enableButtons = function(){
+ this._submit_btn.attr('disabled', '');
+ this._cancel_btn.attr('disabled', '');
+};
+
+EditCommentForm.prototype.disableButtons = function(){
+ this._submit_btn.attr('disabled', 'disabled');
+ this._cancel_btn.attr('disabled', 'disabled');
+};
+
+EditCommentForm.prototype.reset = function(){
+ this._comment = null;
+ this._text = '';
+ this._textarea.val('');
+ this.enableButtons();
+};
+
+EditCommentForm.prototype.confirmAbandon = function(){
+ this.focus(true);
+ this._textarea.addClass('highlight');
+ var answer = confirm($.i18n._('confirm abandon comment'));
+ this._textarea.removeClass('highlight');
+ return answer;
+};
+
+EditCommentForm.prototype.focus = function(hard){
+ this._textarea.focus();
+ if (hard === true){
+ $(this._textarea).scrollTop();
+ }
+};
+
+EditCommentForm.prototype.getSaveHandler = function(){
+
+ var me = this;
+ return function(){
+ var text = me._textarea.val();
+ if (text.length < 10){
+ me.focus();
+ return false;
+ }
+
+ var post_data = {
+ comment: text
+ };
+
+ if (me._type == 'edit'){
+ post_data['comment_id'] = me._comment.getId();
+ post_url = askbot['urls']['editComment'];
+ }
+ else {
+ post_data['post_type'] = me._comment.getParentType();
+ post_data['post_id'] = me._comment.getParentId();
+ post_url = askbot['urls']['postComments'];
+ }
+
+ me.disableButtons();
+
+ $.ajax({
+ type: "POST",
+ url: post_url,
+ dataType: "json",
+ data: post_data,
+ success: function(json) {
+ if (me._type == 'add'){
+ me._comment.dispose();
+ me._comment.getContainerWidget().reRenderComments(json);
+ }
+ else {
+ me._comment.setContent(json);
+ me._comment.getElement().show();
+ }
+ me.detach();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ me._comment.getElement().show();
+ showMessage(me._comment.getElement(), xhr.responseText, 'after');
+ me.detach();
+ me.enableButtons();
+ }
+ });
+ return false;
+ };
+};
+
+//a single instance to reuse
+var editCommentForm = new EditCommentForm();
+
+var Comment = function(widget, data){
+ WrappedElement.call(this);
+ this._container_widget = widget;
+ this._data = data || {};
+ this._blank = true;//set to false by setContent
+ this._element = null;
+ this._delete_prompt = $.i18n._('delete this comment');
+ if (data && data['is_deletable']){
+ this._deletable = data['is_deletable'];
+ }
+ else {
+ this._deletable = false;
+ }
+ if (data && data['is_editable']){
+ this._editable = data['is_deletable'];
+ }
+ else {
+ this._editable = false;
+ }
+};
+inherits(Comment, WrappedElement);
+
+Comment.prototype.decorate = function(element){
+ this._element = $(element);
+ var parent_type = this._element.parent().parent().attr('id').split('-')[2];
+ var comment_id = this._element.attr('id').replace('comment-','');
+ this._data = {id: comment_id};
+ var delete_img = this._element.find('span.delete-icon');
+ if (delete_img.length > 0){
+ this._deletable = true;
+ this._delete_icon = new DeleteIcon(this.deletePrompt);
+ this._delete_icon.setHandler(this.getDeleteHandler());
+ this._delete_icon.decorate(delete_img);
+ }
+ var edit_link = this._element.find('a.edit');
+ if (edit_link.length > 0){
+ this._editable = true;
+ this._edit_link = new EditLink();
+ this._edit_link.setHandler(this.getEditHandler());
+ this._edit_link.decorate(edit_link);
+ }
+
+ var vote = new CommentVoteButton(this);
+ vote.decorate(this._element.find('.comment-votes .upvote'));
+
+ this._blank = false;
+};
+
+Comment.prototype.isBlank = function(){
+ return this._blank;
+};
+
+Comment.prototype.getId = function(){
+ return this._data['id'];
+};
+
+Comment.prototype.hasContent = function(){
+ return ('id' in this._data);
+ //shortcut for 'user_url' 'html' 'user_display_name' 'comment_age'
+};
+
+Comment.prototype.hasText = function(){
+ return ('text' in this._data);
+}
+
+Comment.prototype.getContainerWidget = function(){
+ return this._container_widget;
+};
+
+Comment.prototype.getParentType = function(){
+ return this._container_widget.getPostType();
+};
+
+Comment.prototype.getParentId = function(){
+ return this._container_widget.getPostId();
+};
+
+Comment.prototype.setContent = function(data){
+ this._data = data || this._data;
+ this._element.html('');
+ this._element.attr('class', 'comment');
+ this._element.attr('id', 'comment-' + this._data['id']);
+
+ var votes = this.makeElement('div');
+ votes.addClass('comment-votes');
+
+ var vote = new CommentVoteButton(this);
+ if (this._data['upvoted_by_user']){
+ vote.setVoted(true);
+ }
+ vote.setScore(this._data['score']);
+ votes.append(vote.getElement());
+
+ this._element.append(votes);
+
+ this._comment_delete = $('<div class="comment-delete"></div>');
+ if (this._deletable){
+ this._delete_icon = new DeleteIcon(this._delete_prompt);
+ this._delete_icon.setHandler(this.getDeleteHandler());
+ this._comment_delete.append(this._delete_icon.getElement());
+ }
+ this._element.append(this._comment_delete);
+
+ this._comment_body = $('<div class="comment-body"></div>');
+ this._comment_body.html(this._data['html']);
+ //this._comment_body.append(' &ndash; ');
+
+ this._user_link = $('<a></a>').attr('class', 'author');
+ this._user_link.attr('href', this._data['user_url']);
+ this._user_link.html(this._data['user_display_name']);
+ 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_body.append(')');
+
+ if (this._editable){
+ this._edit_link = new EditLink();
+ this._edit_link.setHandler(this.getEditHandler())
+ this._comment_body.append(this._edit_link.getElement());
+ }
+ this._element.append(this._comment_body);
+
+ this._blank = false;
+};
+
+Comment.prototype.dispose = function(){
+ if (this._comment_body){
+ this._comment_body.remove();
+ }
+ if (this._comment_delete){
+ this._comment_delete.remove();
+ }
+ if (this._user_link){
+ this._user_link.remove();
+ }
+ if (this._comment_age){
+ this._comment_age.remove();
+ }
+ if (this._delete_icon){
+ this._delete_icon.dispose();
+ }
+ if (this._edit_link){
+ this._edit_link.dispose();
+ }
+ this._data = null;
+ Comment.superClass_.dispose.call(this);
+};
+
+Comment.prototype.getElement = function(){
+ Comment.superClass_.getElement.call(this);
+ if (this.isBlank() && this.hasContent()){
+ this.setContent();
+ if (enableMathJax === true){
+ MathJax.Hub.Queue(['Typeset', MathJax.Hub]);
+ }
+ }
+ return this._element;
+};
+
+Comment.prototype.loadText = function(on_load_handler){
+ var me = this;
+ $.ajax({
+ type: "GET",
+ url: askbot['urls']['getComment'],
+ data: {id: this._data['id']},
+ success: function(json){
+ me._data['text'] = json['text'];
+ on_load_handler()
+ },
+ error: function(xhr, textStatus, exception) {
+ showMessage(me.getElement(), xhr.responseText, 'after');
+ }
+ });
+};
+
+Comment.prototype.getText = function(){
+ if (!this.isBlank()){
+ if ('text' in this._data){
+ return this._data['text'];
+ }
+ }
+ return '';
+}
+
+Comment.prototype.getEditHandler = function(){
+ var comment = this;
+ return function(){
+ if (editCommentForm.canCancel()){
+ editCommentForm.detach();
+ if (comment.hasText()){
+ editCommentForm.attachTo(comment, 'edit');
+ }
+ else {
+ comment.loadText(
+ function(){
+ editCommentForm.attachTo(comment, 'edit');
+ }
+ );
+ }
+ }
+ };
+};
+
+Comment.prototype.getDeleteHandler = function(){
+ var comment = this;
+ var del_icon = this._delete_icon;
+ return function(){
+ if (confirm($.i18n._('confirm delete comment'))){
+ comment.getElement().hide();
+ $.ajax({
+ type: 'POST',
+ url: askbot['urls']['deleteComment'],
+ data: { comment_id: comment.getId() },
+ success: function(json, textStatus, xhr) {
+ comment.dispose();
+ },
+ error: function(xhr, textStatus, exception) {
+ comment.getElement().show()
+ showMessage(del_icon.getElement(), xhr.responseText);
+ },
+ dataType: "json"
+ });
+ }
+ };
+};
+
+var PostCommentsWidget = function(){
+ WrappedElement.call(this);
+ this._denied = false;
+};
+inherits(PostCommentsWidget, WrappedElement);
+
+PostCommentsWidget.prototype.decorate = function(element){
+ var element = $(element);
+ this._element = element;
+
+ var widget_id = element.attr('id');
+ var id_bits = widget_id.split('-');
+ this._post_id = id_bits[3];
+ this._post_type = id_bits[2];
+ this._is_truncated = askbot['data'][widget_id]['truncated'];
+ this._user_can_post = askbot['data'][widget_id]['can_post'];
+
+ //see if user can comment here
+ var controls = element.find('.controls');
+ this._activate_button = controls.find('.button');
+
+ if (this._user_can_post == false){
+ setupButtonEventHandlers(
+ this._activate_button,
+ this.getReadOnlyLoadHandler()
+ );
+ }
+ else {
+ setupButtonEventHandlers(
+ this._activate_button,
+ this.getActivateHandler()
+ );
+ }
+
+ this._cbox = element.find('.content');
+ var comments = new Array();
+ var me = this;
+ this._cbox.children().each(function(index, element){
+ var comment = new Comment(me);
+ comments.push(comment)
+ comment.decorate(element);
+ });
+ this._comments = comments;
+};
+
+PostCommentsWidget.prototype.getPostType = function(){
+ return this._post_type;
+};
+
+PostCommentsWidget.prototype.getPostId = function(){
+ return this._post_id;
+};
+
+PostCommentsWidget.prototype.hideButton = function(){
+ this._activate_button.hide();
+};
+
+PostCommentsWidget.prototype.showButton = function(){
+ if (this._is_truncated === false){
+ this._activate_button.html(askbot['messages']['addComment']);
+ }
+ this._activate_button.show();
+}
+
+PostCommentsWidget.prototype.startNewComment = function(){
+ var comment = new Comment(this);
+ this._cbox.append(comment.getElement());
+ editCommentForm.attachTo(comment, 'add');
+};
+
+PostCommentsWidget.prototype.needToReload = function(){
+ return this._is_truncated;
+};
+
+PostCommentsWidget.prototype.getActivateHandler = function(){
+ var me = this;
+ return function() {
+ if (editCommentForm.canCancel()){
+ editCommentForm.detach();
+ if (me.needToReload()){
+ me.reloadAllComments(function(json){
+ me.reRenderComments(json);
+ me.startNewComment();
+ });
+ }
+ else {
+ me.startNewComment();
+ }
+ }
+ };
+};
+
+PostCommentsWidget.prototype.getReadOnlyLoadHandler = function(){
+ var me = this;
+ return function(){
+ me.reloadAllComments(function(json){
+ me.reRenderComments(json);
+ me._activate_button.remove();
+ });
+ };
+};
+
+
+PostCommentsWidget.prototype.reloadAllComments = function(callback){
+ var post_data = {post_id: this._post_id, post_type: this._post_type};
+ var me = this;
+ $.ajax({
+ type: "GET",
+ url: askbot['urls']['postComments'],
+ data: post_data,
+ success: function(json){
+ callback(json);
+ me._is_truncated = false;
+ },
+ dataType: "json"
+ });
+};
+
+PostCommentsWidget.prototype.reRenderComments = function(json){
+ $.each(this._comments, function(i, item){
+ item.dispose();
+ });
+ this._comments = new Array();
+ var me = this;
+ $.each(json, function(i, item){
+ var comment = new Comment(me, item);
+ me._cbox.append(comment.getElement());
+ me._comments.push(comment);
+ });
+};
+
+
+var socialSharing = function(){
+
+ var SERVICE_DATA = {
+ //url - template for the sharing service url, params are for the popup
+ identica: {
+ url: "http://identi.ca/notice/new?status_textarea={TEXT}%20{URL}",
+ params: "width=820, height=526,toolbar=1,status=1,resizable=1,scrollbars=1"
+ },
+ twitter: {
+ url: "http://twitter.com/share?url={URL}&ref=twitbtn&text={TEXT}",
+ params: "width=820,height=526,toolbar=1,status=1,resizable=1,scrollbars=1"
+ },
+ facebook: {
+ url: "http://www.facebook.com/sharer.php?u={URL}&ref=fbshare&t={TEXT}",
+ 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}",
+ params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1"
+ }
+ };
+ var URL = "";
+ var TEXT = "";
+
+ var share_page = function(service_name){
+ if (SERVICE_DATA[service_name]){
+ var url = SERVICE_DATA[service_name]['url'];
+ $.ajax({
+ async: false,
+ url: "http://json-tinyurl.appspot.com/?&callback=?",
+ dataType: "json",
+ data: {'url':URL},
+ success: function(data){
+ url = url.replace('{URL}', data.tinyurl);
+ },
+ error: function(data){
+ url = url.replace('{URL}', URL);
+ },
+ complete: function(data){
+ url = url.replace('{TEXT}', TEXT);
+ var params = SERVICE_DATA[service_name]['params'];
+ if(!window.open(url, "sharing", params)){
+ window.location.href=url;
+ }
+ }
+ });
+ }
+ }
+
+ return {
+ init: function(){
+ URL = window.location.href;
+ TEXT = escape($('h1 > a').html());
+ var fb = $('a.facebook-share')
+ var tw = $('a.twitter-share');
+ var ln = $('a.linkedin-share');
+ var ica = $('a.identica-share');
+ copyAltToTitle(fb);
+ copyAltToTitle(tw);
+ copyAltToTitle(ln);
+ copyAltToTitle(ica);
+ setupButtonEventHandlers(fb, function(){share_page("facebook")});
+ setupButtonEventHandlers(tw, function(){share_page("twitter")});
+ setupButtonEventHandlers(ln, function(){share_page("linkedin")});
+ setupButtonEventHandlers(ica, function(){share_page("identica")});
+ }
+ }
+}();
+
+/**
+ * @constructor
+ * @extends {SimpleControl}
+ */
+var QASwapper = function(){
+ SimpleControl.call(this);
+ this._ans_id = null;
+};
+inherits(QASwapper, SimpleControl);
+
+QASwapper.prototype.decorate = function(element){
+ this._element = element;
+ this._ans_id = parseInt(element.attr('id').split('-').pop());
+ var me = this;
+ this.setHandler(function(){
+ me.startSwapping();
+ });
+};
+
+QASwapper.prototype.startSwapping = function(){
+ while (true){
+ var title = prompt(gettext('Please enter question title (>10 characters)'));
+ if (title.length >= 10){
+ var data = {new_title: title, answer_id: this._ans_id};
+ $.ajax({
+ type: "POST",
+ cache: false,
+ dataType: "json",
+ url: askbot['urls']['swap_question_with_answer'],
+ data: data,
+ success: function(data){
+ var url_template = askbot['urls']['question_url_template'];
+ new_question_url = url_template.replace(
+ '{{QuestionID}}',
+ data['id']
+ ).replace(
+ '{{questionSlug}}',
+ data['slug']
+ );
+ window.location.href = new_question_url;
+ }
+ });
+ break;
+ }
+ }
+};
+
+$(document).ready(function() {
+ $('[id^="comments-for-"]').each(function(index, element){
+ var comments = new PostCommentsWidget();
+ comments.decorate(element);
+ });
+ $('[id^="swap-question-with-answer-"]').each(function(idx, element){
+ var swapper = new QASwapper();
+ swapper.decorate($(element));
+ });
+ questionRetagger.init();
+ socialSharing.init();
+});
+
+
+/*
+Prettify
+http://www.apache.org/licenses/LICENSE-2.0
+*/
+var PR_SHOULD_USE_CONTINUATION = true; var PR_TAB_WIDTH = 8; var PR_normalizedHtml; var PR; var prettyPrintOne; var prettyPrint; function _pr_isIE6() { var isIE6 = navigator && navigator.userAgent && /\bMSIE 6\./.test(navigator.userAgent); _pr_isIE6 = function() { return isIE6; }; return isIE6; } (function() { function wordSet(words) { words = words.split(/ /g); var set = {}; for (var i = words.length; --i >= 0; ) { var w = words[i]; if (w) { set[w] = null; } } return set; } var FLOW_CONTROL_KEYWORDS = "break continue do else for if return while "; var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " + "double enum extern float goto int long register short signed sizeof " + "static struct switch typedef union unsigned void volatile "; var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " + "new operator private protected public this throw true try "; var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " + "concept concept_map const_cast constexpr decltype " + "dynamic_cast explicit export friend inline late_check " + "mutable namespace nullptr reinterpret_cast static_assert static_cast " + "template typeid typename typeof using virtual wchar_t where "; var JAVA_KEYWORDS = COMMON_KEYWORDS + "boolean byte extends final finally implements import instanceof null " + "native package strictfp super synchronized throws transient "; var CSHARP_KEYWORDS = JAVA_KEYWORDS + "as base by checked decimal delegate descending event " + "fixed foreach from group implicit in interface internal into is lock " + "object out override orderby params readonly ref sbyte sealed " + "stackalloc string select uint ulong unchecked unsafe ushort var "; var JSCRIPT_KEYWORDS = COMMON_KEYWORDS + "debugger eval export function get null set undefined var with " + "Infinity NaN "; var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " + "goto if import last local my next no our print package redo require " + "sub undef unless until use wantarray while BEGIN END "; var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " + "elif except exec finally from global import in is lambda " + "nonlocal not or pass print raise try with yield " + "False True None "; var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" + " defined elsif end ensure false in module next nil not or redo rescue " + "retry self super then true undef unless until when yield BEGIN END "; var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " + "function in local set then until "; var ALL_KEYWORDS = (CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS); var PR_STRING = 'str'; var PR_KEYWORD = 'kwd'; var PR_COMMENT = 'com'; var PR_TYPE = 'typ'; var PR_LITERAL = 'lit'; var PR_PUNCTUATION = 'pun'; var PR_PLAIN = 'pln'; var PR_TAG = 'tag'; var PR_DECLARATION = 'dec'; var PR_SOURCE = 'src'; var PR_ATTRIB_NAME = 'atn'; var PR_ATTRIB_VALUE = 'atv'; var PR_NOCODE = 'nocode'; function isWordChar(ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } function spliceArrayInto(inserted, container, containerPosition, countReplaced) { inserted.unshift(containerPosition, countReplaced || 0); try { container.splice.apply(container, inserted); } finally { inserted.splice(0, 2); } } var REGEXP_PRECEDER_PATTERN = function() { var preceders = ["!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=", "&=", "(", "*", "*=", "+=", ",", "-=", "->", "/", "/=", ":", "::", ";", "<", "<<", "<<=", "<=", "=", "==", "===", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", "^", "^=", "^^", "^^=", "{", "|", "|=", "||", "||=", "~", "break", "case", "continue", "delete", "do", "else", "finally", "instanceof", "return", "throw", "try", "typeof"]; var pattern = '(?:' + '(?:(?:^|[^0-9.])\\.{1,3})|' + '(?:(?:^|[^\\+])\\+)|' + '(?:(?:^|[^\\-])-)'; for (var i = 0; i < preceders.length; ++i) { var preceder = preceders[i]; if (isWordChar(preceder.charAt(0))) { pattern += '|\\b' + preceder; } else { pattern += '|' + preceder.replace(/([^=<>:&])/g, '\\$1'); } } pattern += '|^)\\s*$'; return new RegExp(pattern); } (); var pr_amp = /&/g; var pr_lt = /</g; var pr_gt = />/g; var pr_quot = /\"/g; function attribToHtml(str) { return str.replace(pr_amp, '&amp;').replace(pr_lt, '&lt;').replace(pr_gt, '&gt;').replace(pr_quot, '&quot;'); } function textToHtml(str) { return str.replace(pr_amp, '&amp;').replace(pr_lt, '&lt;').replace(pr_gt, '&gt;'); } var pr_ltEnt = /&lt;/g; var pr_gtEnt = /&gt;/g; var pr_aposEnt = /&apos;/g; var pr_quotEnt = /&quot;/g; var pr_ampEnt = /&amp;/g; var pr_nbspEnt = /&nbsp;/g; function htmlToText(html) { var pos = html.indexOf('&'); if (pos < 0) { return html; } for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0; ) { var end = html.indexOf(';', pos); if (end >= 0) { var num = html.substring(pos + 3, end); var radix = 10; if (num && num.charAt(0) === 'x') { num = num.substring(1); radix = 16; } var codePoint = parseInt(num, radix); if (!isNaN(codePoint)) { html = (html.substring(0, pos) + String.fromCharCode(codePoint) + html.substring(end + 1)); } } } return html.replace(pr_ltEnt, '<').replace(pr_gtEnt, '>').replace(pr_aposEnt, "'").replace(pr_quotEnt, '"').replace(pr_ampEnt, '&').replace(pr_nbspEnt, ' '); } function isRawContent(node) { return 'XMP' === node.tagName; } function normalizedHtml(node, out) { switch (node.nodeType) { case 1: var name = node.tagName.toLowerCase(); out.push('<', name); for (var i = 0; i < node.attributes.length; ++i) { var attr = node.attributes[i]; if (!attr.specified) { continue; } out.push(' '); normalizedHtml(attr, out); } out.push('>'); for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } if (node.firstChild || !/^(?:br|link|img)$/.test(name)) { out.push('<\/', name, '>'); } break; case 2: out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"'); break; case 3: case 4: out.push(textToHtml(node.nodeValue)); break; } } var PR_innerHtmlWorks = null; function getInnerHtml(node) { if (null === PR_innerHtmlWorks) { var testNode = document.createElement('PRE'); testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />')); PR_innerHtmlWorks = !/</.test(testNode.innerHTML); } if (PR_innerHtmlWorks) { var content = node.innerHTML; if (isRawContent(node)) { content = textToHtml(content); } return content; } var out = []; for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } return out.join(''); } function makeTabExpander(tabWidth) { var SPACES = ' '; var charInLine = 0; return function(plainText) { var out = null; var pos = 0; for (var i = 0, n = plainText.length; i < n; ++i) { var ch = plainText.charAt(i); switch (ch) { case '\t': if (!out) { out = []; } out.push(plainText.substring(pos, i)); var nSpaces = tabWidth - (charInLine % tabWidth); charInLine += nSpaces; for (; nSpaces >= 0; nSpaces -= SPACES.length) { out.push(SPACES.substring(0, nSpaces)); } pos = i + 1; break; case '\n': charInLine = 0; break; default: ++charInLine; } } if (!out) { return plainText; } out.push(plainText.substring(pos)); return out.join(''); }; } var pr_chunkPattern = /(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g; var pr_commentPrefix = /^<!--/; var pr_cdataPrefix = /^<\[CDATA\[/; var pr_brPrefix = /^<br\b/i; var pr_tagNameRe = /^<(\/?)([a-zA-Z]+)/; function extractTags(s) { var matches = s.match(pr_chunkPattern); var sourceBuf = []; var sourceBufLen = 0; var extractedTags = []; if (matches) { for (var i = 0, n = matches.length; i < n; ++i) { var match = matches[i]; if (match.length > 1 && match.charAt(0) === '<') { if (pr_commentPrefix.test(match)) { continue; } if (pr_cdataPrefix.test(match)) { sourceBuf.push(match.substring(9, match.length - 3)); sourceBufLen += match.length - 12; } else if (pr_brPrefix.test(match)) { sourceBuf.push('\n'); ++sourceBufLen; } else { if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) { var name = match.match(pr_tagNameRe)[2]; var depth = 1; end_tag_loop: for (var j = i + 1; j < n; ++j) { var name2 = matches[j].match(pr_tagNameRe); if (name2 && name2[2] === name) { if (name2[1] === '/') { if (--depth === 0) { break end_tag_loop; } } else { ++depth; } } } if (j < n) { extractedTags.push(sourceBufLen, matches.slice(i, j + 1).join('')); i = j; } else { extractedTags.push(sourceBufLen, match); } } else { extractedTags.push(sourceBufLen, match); } } } else { var literalText = htmlToText(match); sourceBuf.push(literalText); sourceBufLen += literalText.length; } } } return { source: sourceBuf.join(''), tags: extractedTags }; } function isNoCodeTag(tag) { return !!tag.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g, ' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/); } function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { var shortcuts = {}; (function() { var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); for (var i = allPatterns.length; --i >= 0; ) { var patternParts = allPatterns[i]; var shortcutChars = patternParts[3]; if (shortcutChars) { for (var c = shortcutChars.length; --c >= 0; ) { shortcuts[shortcutChars.charAt(c)] = patternParts; } } } })(); var nPatterns = fallthroughStylePatterns.length; var notWs = /\S/; return function(sourceCode, opt_basePos) { opt_basePos = opt_basePos || 0; var decorations = [opt_basePos, PR_PLAIN]; var lastToken = ''; var pos = 0; var tail = sourceCode; while (tail.length) { var style; var token = null; var match; var patternParts = shortcuts[tail.charAt(0)]; if (patternParts) { match = tail.match(patternParts[1]); token = match[0]; style = patternParts[0]; } else { for (var i = 0; i < nPatterns; ++i) { patternParts = fallthroughStylePatterns[i]; var contextPattern = patternParts[2]; if (contextPattern && !contextPattern.test(lastToken)) { continue; } match = tail.match(patternParts[1]); if (match) { token = match[0]; style = patternParts[0]; break; } } if (!token) { style = PR_PLAIN; token = tail.substring(0, 1); } } decorations.push(opt_basePos + pos, style); pos += token.length; tail = tail.substring(token.length); if (style !== PR_COMMENT && notWs.test(token)) { lastToken = token; } } return decorations; }; } var PR_MARKUP_LEXER = createSimpleLexer([], [[PR_PLAIN, /^[^<]+/, null], [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/, null], [PR_COMMENT, /^<!--[\s\S]*?(?:-->|$)/, null], [PR_SOURCE, /^<\?[\s\S]*?(?:\?>|$)/, null], [PR_SOURCE, /^<%[\s\S]*?(?:%>|$)/, null], [PR_SOURCE, /^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i, null], [PR_TAG, /^<\/?\w[^<>]*>/, null]]); var PR_SOURCE_CHUNK_PARTS = /^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/; function tokenizeMarkup(source) { var decorations = PR_MARKUP_LEXER(source); for (var i = 0; i < decorations.length; i += 2) { if (decorations[i + 1] === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var sourceChunk = source.substring(start, end); var match = sourceChunk.match(PR_SOURCE_CHUNK_PARTS); if (match) { decorations.splice(i, 2, start, PR_TAG, start + match[1].length, PR_SOURCE, start + match[1].length + (match[2] || '').length, PR_TAG); } } } return decorations; } var PR_TAG_LEXER = createSimpleLexer([[PR_ATTRIB_VALUE, /^\'[^\']*(?:\'|$)/, null, "'"], [PR_ATTRIB_VALUE, /^\"[^\"]*(?:\"|$)/, null, '"'], [PR_PUNCTUATION, /^[<>\/=]+/, null, '<>/=']], [[PR_TAG, /^[\w:\-]+/, /^</], [PR_ATTRIB_VALUE, /^[\w\-]+/, /^=/], [PR_ATTRIB_NAME, /^[\w:\-]+/, null], [PR_PLAIN, /^\s+/, null, ' \t\r\n']]); function splitTagAttributes(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_TAG) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var chunk = source.substring(start, end); var subDecorations = PR_TAG_LEXER(chunk, start); spliceArrayInto(subDecorations, decorations, i, 2); i += subDecorations.length - 2; } } return decorations; } function sourceDecorator(options) { var shortcutStylePatterns = [], fallthroughStylePatterns = []; if (options.tripleQuotedStrings) { shortcutStylePatterns.push([PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, null, '\'"']); } else if (options.multiLineStrings) { shortcutStylePatterns.push([PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, null, '\'"`']); } else { shortcutStylePatterns.push([PR_STRING, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, '"\'']); } fallthroughStylePatterns.push([PR_PLAIN, /^(?:[^\'\"\`\/\#]+)/, null, ' \r\n']); if (options.hashComments) { shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); } if (options.cStyleComments) { fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); fallthroughStylePatterns.push([PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); } if (options.regexLiterals) { var REGEX_LITERAL = ('^/(?=[^/*])' + '(?:[^/\\x5B\\x5C]' + '|\\x5C[\\s\\S]' + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' + '(?:/|$)'); fallthroughStylePatterns.push([PR_STRING, new RegExp(REGEX_LITERAL), REGEXP_PRECEDER_PATTERN]); } var keywords = wordSet(options.keywords); options = null; var splitStringAndCommentTokens = createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); var styleLiteralIdentifierPuncRecognizer = createSimpleLexer([], [[PR_PLAIN, /^\s+/, null, ' \r\n'], [PR_PLAIN, /^[a-z_$@][a-z_$@0-9]*/i, null], [PR_LITERAL, /^0x[a-f0-9]+[a-z]/i, null], [PR_LITERAL, /^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?[a-z]*/i, null, '123456789'], [PR_PUNCTUATION, /^[^\s\w\.$@]+/, null]]); function splitNonStringNonCommentTokens(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_PLAIN) { var start, end, chunk, subDecs; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; chunk = source.substring(start, end); subDecs = styleLiteralIdentifierPuncRecognizer(chunk, start); for (var j = 0, m = subDecs.length; j < m; j += 2) { var subStyle = subDecs[j + 1]; if (subStyle === PR_PLAIN) { var subStart = subDecs[j]; var subEnd = j + 2 < m ? subDecs[j + 2] : chunk.length; var token = source.substring(subStart, subEnd); if (token === '.') { subDecs[j + 1] = PR_PUNCTUATION; } else if (token in keywords) { subDecs[j + 1] = PR_KEYWORD; } else if (/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)) { subDecs[j + 1] = token.charAt(0) === '@' ? PR_LITERAL : PR_TYPE; } } } spliceArrayInto(subDecs, decorations, i, 2); i += subDecs.length - 2; } } return decorations; } return function(sourceCode) { var decorations = splitStringAndCommentTokens(sourceCode); decorations = splitNonStringNonCommentTokens(sourceCode, decorations); return decorations; }; } var decorateSource = sourceDecorator({ keywords: ALL_KEYWORDS, hashComments: true, cStyleComments: true, multiLineStrings: true, regexLiterals: true }); function splitSourceNodes(source, decorations) { for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; if (style === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var subDecorations = decorateSource(source.substring(start, end)); for (var j = 0, m = subDecorations.length; j < m; j += 2) { subDecorations[j] += start; } spliceArrayInto(subDecorations, decorations, i, 2); i += subDecorations.length - 2; } } return decorations; } function splitSourceAttributes(source, decorations) { var nextValueIsSource = false; for (var i = 0; i < decorations.length; i += 2) { var style = decorations[i + 1]; var start, end; if (style === PR_ATTRIB_NAME) { start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; nextValueIsSource = /^on|^style$/i.test(source.substring(start, end)); } else if (style === PR_ATTRIB_VALUE) { if (nextValueIsSource) { start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var attribValue = source.substring(start, end); var attribLen = attribValue.length; var quoted = (attribLen >= 2 && /^[\"\']/.test(attribValue) && attribValue.charAt(0) === attribValue.charAt(attribLen - 1)); var attribSource; var attribSourceStart; var attribSourceEnd; if (quoted) { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue; } else { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue.substring(1, attribValue.length - 1); } var attribSourceDecorations = decorateSource(attribSource); for (var j = 0, m = attribSourceDecorations.length; j < m; j += 2) { attribSourceDecorations[j] += attribSourceStart; } if (quoted) { attribSourceDecorations.push(attribSourceEnd, PR_ATTRIB_VALUE); spliceArrayInto(attribSourceDecorations, decorations, i + 2, 0); } else { spliceArrayInto(attribSourceDecorations, decorations, i, 2); } } nextValueIsSource = false; } } return decorations; } function decorateMarkup(sourceCode) { var decorations = tokenizeMarkup(sourceCode); decorations = splitTagAttributes(sourceCode, decorations); decorations = splitSourceNodes(sourceCode, decorations); decorations = splitSourceAttributes(sourceCode, decorations); return decorations; } function recombineTagsAndDecorations(sourceText, extractedTags, decorations) { var html = []; var outputIdx = 0; var openDecoration = null; var currentDecoration = null; var tagPos = 0; var decPos = 0; var tabExpander = makeTabExpander(PR_TAB_WIDTH); var adjacentSpaceRe = /([\r\n ]) /g; var startOrSpaceRe = /(^| ) /gm; var newlineRe = /\r\n?|\n/g; var trailingSpaceRe = /[ \r\n]$/; var lastWasSpace = true; function emitTextUpTo(sourceIdx) { if (sourceIdx > outputIdx) { if (openDecoration && openDecoration !== currentDecoration) { html.push('</span>'); openDecoration = null; } if (!openDecoration && currentDecoration) { openDecoration = currentDecoration; html.push('<span class="', openDecoration, '">'); } var htmlChunk = textToHtml(tabExpander(sourceText.substring(outputIdx, sourceIdx))).replace(lastWasSpace ? startOrSpaceRe : adjacentSpaceRe, '$1&nbsp;'); lastWasSpace = trailingSpaceRe.test(htmlChunk); html.push(htmlChunk.replace(newlineRe, '<br />')); outputIdx = sourceIdx; } } while (true) { var outputTag; if (tagPos < extractedTags.length) { if (decPos < decorations.length) { outputTag = extractedTags[tagPos] <= decorations[decPos]; } else { outputTag = true; } } else { outputTag = false; } if (outputTag) { emitTextUpTo(extractedTags[tagPos]); if (openDecoration) { html.push('</span>'); openDecoration = null; } html.push(extractedTags[tagPos + 1]); tagPos += 2; } else if (decPos < decorations.length) { emitTextUpTo(decorations[decPos]); currentDecoration = decorations[decPos + 1]; decPos += 2; } else { break; } } emitTextUpTo(sourceText.length); if (openDecoration) { html.push('</span>'); } return html.join(''); } var langHandlerRegistry = {}; function registerLangHandler(handler, fileExtensions) { for (var i = fileExtensions.length; --i >= 0; ) { var ext = fileExtensions[i]; if (!langHandlerRegistry.hasOwnProperty(ext)) { langHandlerRegistry[ext] = handler; } else if ('console' in window) { console.log('cannot override language handler %s', ext); } } } registerLangHandler(decorateSource, ['default-code']); registerLangHandler(decorateMarkup, ['default-markup', 'html', 'htm', 'xhtml', 'xml', 'xsl']); registerLangHandler(sourceDecorator({ keywords: CPP_KEYWORDS, hashComments: true, cStyleComments: true }), ['c', 'cc', 'cpp', 'cs', 'cxx', 'cyc']); registerLangHandler(sourceDecorator({ keywords: JAVA_KEYWORDS, cStyleComments: true }), ['java']); registerLangHandler(sourceDecorator({ keywords: SH_KEYWORDS, hashComments: true, multiLineStrings: true }), ['bsh', 'csh', 'sh']); registerLangHandler(sourceDecorator({ keywords: PYTHON_KEYWORDS, hashComments: true, multiLineStrings: true, tripleQuotedStrings: true }), ['cv', 'py']); registerLangHandler(sourceDecorator({ keywords: PERL_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['perl', 'pl', 'pm']); registerLangHandler(sourceDecorator({ keywords: RUBY_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['rb']); registerLangHandler(sourceDecorator({ keywords: JSCRIPT_KEYWORDS, cStyleComments: true, regexLiterals: true }), ['js']); function prettyPrintOne(sourceCodeHtml, opt_langExtension) { try { var sourceAndExtractedTags = extractTags(sourceCodeHtml); var source = sourceAndExtractedTags.source; var extractedTags = sourceAndExtractedTags.tags; if (!langHandlerRegistry.hasOwnProperty(opt_langExtension)) { opt_langExtension = /^\s*</.test(source) ? 'default-markup' : 'default-code'; } var decorations = langHandlerRegistry[opt_langExtension].call({}, source); return recombineTagsAndDecorations(source, extractedTags, decorations); } catch (e) { if ('console' in window) { console.log(e); console.trace(); } return sourceCodeHtml; } } function prettyPrint(opt_whenDone) { var isIE6 = _pr_isIE6(); var codeSegments = [document.getElementsByTagName('pre'), document.getElementsByTagName('code'), document.getElementsByTagName('xmp')]; var elements = []; for (var i = 0; i < codeSegments.length; ++i) { for (var j = 0; j < codeSegments[i].length; ++j) { elements.push(codeSegments[i][j]); } } codeSegments = null; var k = 0; function doWork() { var endTime = (PR_SHOULD_USE_CONTINUATION ? new Date().getTime() + 250 : Infinity); for (; k < elements.length && new Date().getTime() < endTime; k++) { var cs = elements[k]; if (cs.className && cs.className.indexOf('prettyprint') >= 0) { var langExtension = cs.className.match(/\blang-(\w+)\b/); if (langExtension) { langExtension = langExtension[1]; } var nested = false; for (var p = cs.parentNode; p; p = p.parentNode) { if ((p.tagName === 'pre' || p.tagName === 'code' || p.tagName === 'xmp') && p.className && p.className.indexOf('prettyprint') >= 0) { nested = true; break; } } if (!nested) { var content = getInnerHtml(cs); content = content.replace(/(?:\r\n?|\n)$/, ''); var newContent = prettyPrintOne(content, langExtension); if (!isRawContent(cs)) { cs.innerHTML = newContent; } else { var pre = document.createElement('PRE'); for (var i = 0; i < cs.attributes.length; ++i) { var a = cs.attributes[i]; if (a.specified) { var aname = a.name.toLowerCase(); if (aname === 'class') { pre.className = a.value; } else { pre.setAttribute(a.name, a.value); } } } pre.innerHTML = newContent; cs.parentNode.replaceChild(pre, cs); cs = pre; } if (isIE6 && cs.tagName === 'PRE') { var lineBreaks = cs.getElementsByTagName('br'); for (var j = lineBreaks.length; --j >= 0; ) { var lineBreak = lineBreaks[j]; lineBreak.parentNode.replaceChild(document.createTextNode('\r\n'), lineBreak); } } } } } if (k < elements.length) { setTimeout(doWork, 250); } else if (opt_whenDone) { opt_whenDone(); } } doWork(); } window['PR_normalizedHtml'] = normalizedHtml; window['prettyPrintOne'] = prettyPrintOne; window['prettyPrint'] = prettyPrint; window['PR'] = { 'createSimpleLexer': createSimpleLexer, 'registerLangHandler': registerLangHandler, 'sourceDecorator': sourceDecorator, 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, 'PR_COMMENT': PR_COMMENT, 'PR_DECLARATION': PR_DECLARATION, 'PR_KEYWORD': PR_KEYWORD, 'PR_LITERAL': PR_LITERAL, 'PR_NOCODE': PR_NOCODE, 'PR_PLAIN': PR_PLAIN, 'PR_PUNCTUATION': PR_PUNCTUATION, 'PR_SOURCE': PR_SOURCE, 'PR_STRING': PR_STRING, 'PR_TAG': PR_TAG, 'PR_TYPE': PR_TYPE }; })();
diff --git a/askbot/skins/old/media/js/se_hilite.js b/askbot/skins/old/media/js/se_hilite.js
new file mode 100644
index 00000000..42e99c8e
--- /dev/null
+++ b/askbot/skins/old/media/js/se_hilite.js
@@ -0,0 +1 @@
+Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c<Hilite.search_engines.length;c++){var f=Hilite.search_engines[c];e.compile("^http://(www\\.)?"+f[0],"i");var b=d.match(e);if(b){var a;if(isNaN(f[1])){a=Hilite.decodeReferrerQS(d,f[1])}else{a=b[f[1]+1]}if(a){a=decodeURIComponent(a);if(f.length>2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b<e.length;b++){e[b]=e[b].toLowerCase();if(Hilite.exact){c.push("\\b"+e[b]+"\\b")}else{c.push(e[b])}}c=new RegExp(c.join("|"),"i");var a={};for(var b=0;b<e.length;b++){if(Hilite.style_name_suffix){a[e[b]]=Hilite.style_name+(b+1)}else{a[e[b]]=Hilite.style_name}}var d=function(m){var j=c.exec(m.data);if(j){var n=j[0];var i="";var h=m.splitText(j.index);var g=h.splitText(n.length);var l=m.ownerDocument.createElement("SPAN");m.parentNode.replaceChild(l,h);l.className=a[n.toLowerCase()];l.appendChild(h);return l}else{return m}};Hilite.walkElements(f.childNodes[0],1,d)};Hilite.hilite=function(){var a=Hilite.debug_referrer?Hilite.debug_referrer:document.referrer;var b=null;a=Hilite.decodeReferrer(a);if(a&&((Hilite.elementid&&(b=document.getElementById(Hilite.elementid)))||(b=document.body))){Hilite.hiliteElement(b,a)}};Hilite.walkElements=function(d,f,e){var a=/^(script|style|textarea)/i;var c=0;while(d&&f>0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}}; \ No newline at end of file
diff --git a/askbot/skins/old/media/js/se_hilite_src.js b/askbot/skins/old/media/js/se_hilite_src.js
new file mode 100644
index 00000000..b604f156
--- /dev/null
+++ b/askbot/skins/old/media/js/se_hilite_src.js
@@ -0,0 +1,273 @@
+/**
+ * Search Engine Keyword Highlight (http://fucoder.com/code/se-hilite/)
+ *
+ * This module can be imported by any HTML page, and it would analyse the
+ * referrer for search engine keywords, and then highlight those keywords on
+ * the page, by wrapping them around <span class="hilite">...</span> tags.
+ * Document can then define styles else where to provide visual feedbacks.
+ *
+ * Usage:
+ *
+ * In HTML. Add the following line towards the end of the document.
+ *
+ * <script type="text/javascript" src="se_hilite.js"></script>
+ *
+ * In CSS, define the following style:
+ *
+ * .hilite { background-color: #ff0; }
+ *
+ * If Hilite.style_name_suffix is true, then define the follow styles:
+ *
+ * .hilite1 { background-color: #ff0; }
+ * .hilite2 { background-color: #f0f; }
+ * .hilite3 { background-color: #0ff; }
+ * .hilite4 ...
+ *
+ * @author Scott Yang <http://scott.yang.id.au/>
+ * @version 1.5
+ */
+
+// Configuration:
+Hilite = {
+ /**
+ * Element ID to be highlighted. If set, then only content inside this DOM
+ * element will be highlighted, otherwise everything inside document.body
+ * will be searched.
+ */
+ elementid: 'content',
+
+ /**
+ * Whether we are matching an exact word. For example, searching for
+ * "highlight" will only match "highlight" but not "highlighting" if exact
+ * is set to true.
+ */
+ exact: true,
+
+ /**
+ * Maximum number of DOM nodes to test, before handing the control back to
+ * the GUI thread. This prevents locking up the UI when parsing and
+ * replacing inside a large document.
+ */
+ max_nodes: 1000,
+
+ /**
+ * Whether to automatically hilite a section of the HTML document, by
+ * binding the "Hilite.hilite()" to window.onload() event. If this
+ * attribute is set to false, you can still manually trigger the hilite by
+ * calling Hilite.hilite() in Javascript after document has been fully
+ * loaded.
+ */
+ onload: true,
+
+ /**
+ * Name of the style to be used. Default to 'hilite'.
+ */
+ style_name: 'hilite',
+
+ /**
+ * Whether to use different style names for different search keywords by
+ * appending a number starting from 1, i.e. hilite1, hilite2, etc.
+ */
+ style_name_suffix: true,
+
+ /**
+ * Set it to override the document.referrer string. Used for debugging
+ * only.
+ */
+ debug_referrer: ''
+};
+
+Hilite.search_engines = [
+ ['google\\.', 'q'], // Google
+ ['search\\.yahoo\\.', 'p'], // Yahoo
+ ['search\\.msn\\.', 'q'], // MSN
+ ['search\\.live\\.', 'query'], // MSN Live
+ ['search\\.aol\\.', 'userQuery'], // AOL
+ ['ask\\.com', 'q'], // Ask.com
+ ['altavista\\.', 'q'], // AltaVista
+ ['feedster\\.', 'q'], // Feedster
+ ['search\\.lycos\\.', 'q'], // Lycos
+ ['alltheweb\\.', 'q'], // AllTheWeb
+ ['technorati\\.com/search/([^\\?/]+)', 1], // Technorati
+ ['dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)', 1, true] // DogPile
+];
+
+/**
+ * Decode the referrer string and return a list of search keywords.
+ */
+Hilite.decodeReferrer = function(referrer) {
+ var query = null;
+ var regex = new RegExp('');
+
+ for (var i = 0; i < Hilite.search_engines.length; i ++) {
+ var se = Hilite.search_engines[i];
+ regex.compile('^http://(www\\.)?' + se[0], 'i');
+ var match = referrer.match(regex);
+ if (match) {
+ var result;
+ if (isNaN(se[1])) {
+ result = Hilite.decodeReferrerQS(referrer, se[1]);
+ } else {
+ result = match[se[1] + 1];
+ }
+ if (result) {
+ result = decodeURIComponent(result);
+ // XXX: DogPile's URI requires decoding twice.
+ if (se.length > 2 && se[2])
+ result = decodeURIComponent(result);
+ result = result.replace(/\'|"/g, '');
+ result = result.split(/[\s,\+\.]+/);
+ return result;
+ }
+ break;
+ }
+ }
+ return null;
+};
+
+Hilite.decodeReferrerQS = function(referrer, match) {
+ var idx = referrer.indexOf('?');
+ var idx2;
+ if (idx >= 0) {
+ var qs = new String(referrer.substring(idx + 1));
+ idx = 0;
+ idx2 = 0;
+ while ((idx >= 0) && ((idx2 = qs.indexOf('=', idx)) >= 0)) {
+ var key, val;
+ key = qs.substring(idx, idx2);
+ idx = qs.indexOf('&', idx2) + 1;
+ if (key == match) {
+ if (idx <= 0) {
+ return qs.substring(idx2+1);
+ } else {
+ return qs.substring(idx2+1, idx - 1);
+ }
+ }
+ else if (idx <=0) {
+ return null;
+ }
+ }
+ }
+ return null;
+};
+
+/**
+ * Highlight a DOM element with a list of keywords.
+ */
+Hilite.hiliteElement = function(elm, query) {
+ if (!query || elm.childNodes.length == 0)
+ return;
+
+ var qre = new Array();
+ for (var i = 0; i < query.length; i ++) {
+ query[i] = query[i].toLowerCase();
+ if (Hilite.exact)
+ qre.push('\\b'+query[i]+'\\b');
+ else
+ qre.push(query[i]);
+ }
+
+ qre = new RegExp(qre.join("|"), "i");
+
+ var stylemapper = {};
+ for (var i = 0; i < query.length; i ++) {
+ if (Hilite.style_name_suffix)
+ stylemapper[query[i]] = Hilite.style_name+(i+1);
+ else
+ stylemapper[query[i]] = Hilite.style_name;
+ }
+
+ var textproc = function(node) {
+ var match = qre.exec(node.data);
+ if (match) {
+ var val = match[0];
+ var k = '';
+ var node2 = node.splitText(match.index);
+ var node3 = node2.splitText(val.length);
+ var span = node.ownerDocument.createElement('SPAN');
+ node.parentNode.replaceChild(span, node2);
+ span.className = stylemapper[val.toLowerCase()];
+ span.appendChild(node2);
+ return span;
+ } else {
+ return node;
+ }
+ };
+ Hilite.walkElements(elm.childNodes[0], 1, textproc);
+};
+
+/**
+ * Highlight a HTML document using keywords extracted from document.referrer.
+ * This is the main function to be called to perform search engine highlight
+ * on a document.
+ *
+ * Currently it would check for DOM element 'content', element 'container' and
+ * then document.body in that order, so it only highlights appropriate section
+ * on WordPress and Movable Type pages.
+ */
+Hilite.hilite = function() {
+ // If 'debug_referrer' then we will use that as our referrer string
+ // instead.
+ var q = Hilite.debug_referrer ? Hilite.debug_referrer : document.referrer;
+ var e = null;
+ q = Hilite.decodeReferrer(q);
+ if (q && ((Hilite.elementid &&
+ (e = document.getElementById(Hilite.elementid))) ||
+ (e = document.body)))
+ {
+ Hilite.hiliteElement(e, q);
+ }
+};
+
+Hilite.walkElements = function(node, depth, textproc) {
+ var skipre = /^(script|style|textarea)/i;
+ var count = 0;
+ while (node && depth > 0) {
+ count ++;
+ if (count >= Hilite.max_nodes) {
+ var handler = function() {
+ Hilite.walkElements(node, depth, textproc);
+ };
+ setTimeout(handler, 50);
+ return;
+ }
+
+ if (node.nodeType == 1) { // ELEMENT_NODE
+ if (!skipre.test(node.tagName) && node.childNodes.length > 0) {
+ node = node.childNodes[0];
+ depth ++;
+ continue;
+ }
+ } else if (node.nodeType == 3) { // TEXT_NODE
+ node = textproc(node);
+ }
+
+ if (node.nextSibling) {
+ node = node.nextSibling;
+ } else {
+ while (depth > 0) {
+ node = node.parentNode;
+ depth --;
+ if (node.nextSibling) {
+ node = node.nextSibling;
+ break;
+ }
+ }
+ }
+ }
+};
+
+// Trigger the highlight using the onload handler.
+if (Hilite.onload) {
+ if (window.attachEvent) {
+ window.attachEvent('onload', Hilite.hilite);
+ } else if (window.addEventListener) {
+ window.addEventListener('load', Hilite.hilite, false);
+ } else {
+ var __onload = window.onload;
+ window.onload = function() {
+ Hilite.hilite();
+ __onload();
+ };
+ }
+}
diff --git a/askbot/skins/old/media/js/tag_selector.js b/askbot/skins/old/media/js/tag_selector.js
new file mode 100644
index 00000000..659c157b
--- /dev/null
+++ b/askbot/skins/old/media/js/tag_selector.js
@@ -0,0 +1,375 @@
+
+var TagDetailBox = function(box_type){
+ WrappedElement.call(this);
+ this.box_type = box_type;
+ this._is_blank = true;
+ this._tags = new Array();
+ this.wildcard = undefined;
+};
+inherits(TagDetailBox, WrappedElement);
+
+TagDetailBox.prototype.createDom = function(){
+ this._element = this.makeElement('div');
+ this._element.addClass('wildcard-tags');
+ this._headline = this.makeElement('p');
+ this._headline.html(gettext('Tag "<span></span>" matches:'));
+ this._element.append(this._headline);
+ this._tag_list_element = this.makeElement('ul');
+ this._tag_list_element.addClass('tags');
+ this._element.append(this._tag_list_element);
+ this._footer = this.makeElement('p');
+ this._footer.css('clear', 'left');
+ this._element.append(this._footer);
+ this._element.hide();
+};
+
+TagDetailBox.prototype.belongsTo = function(wildcard){
+ return (this.wildcard === wildcard);
+};
+
+TagDetailBox.prototype.isBlank = function(){
+ return this._is_blank;
+};
+
+TagDetailBox.prototype.clear = function(){
+ if (this.isBlank()){
+ return;
+ }
+ this._is_blank = true;
+ this.getElement().hide();
+ this.wildcard = null;
+ $.each(this._tags, function(idx, item){
+ item.dispose();
+ });
+ this._tags = new Array();
+};
+
+TagDetailBox.prototype.loadTags = function(wildcard, callback){
+ var me = this;
+ $.ajax({
+ type: 'GET',
+ dataType: 'json',
+ cache: false,
+ url: askbot['urls']['get_tags_by_wildcard'],
+ data: { wildcard: wildcard },
+ success: callback,
+ failure: function(){ me._loading = false; }
+ });
+};
+
+TagDetailBox.prototype.renderFor = function(wildcard){
+ var me = this;
+ if (this._loading === true){
+ return;
+ }
+ this._loading = true;
+ this.loadTags(
+ wildcard,
+ function(data, text_status, xhr){
+ me._tag_names = data['tag_names'];
+ if (data['tag_count'] > 0){
+ var wildcard_display = wildcard.replace(/\*$/, '&#10045;');
+ me._headline.find('span').html(wildcard_display);
+ $.each(me._tag_names, function(idx, name){
+ var tag = new Tag();
+ tag.setName(name);
+ //tag.setLinkable(false);
+ me._tags.push(tag);
+ me._tag_list_element.append(tag.getElement());
+ });
+ me._is_blank = false;
+ me.wildcard = wildcard;
+ var tag_count = data['tag_count'];
+ if (tag_count > 20){
+ var fmts = gettext('and %s more, not shown...');
+ var footer_text = interpolate(fmts, [tag_count - 20]);
+ me._footer.html(footer_text);
+ me._footer.show();
+ } else {
+ me._footer.hide();
+ }
+ me._element.show();
+ } else {
+ me.clear();
+ }
+ me._loading = false;
+ }
+ );
+}
+
+function pickedTags(){
+
+ var interestingTags = {};
+ var ignoredTags = {};
+ var interestingTagDetailBox = new TagDetailBox('interesting');
+ var ignoredTagDetailBox = new TagDetailBox('ignored');
+
+ var sendAjax = function(tagnames, reason, action, callback){
+ var url = '';
+ if (action == 'add'){
+ if (reason == 'good'){
+ url = askbot['urls']['mark_interesting_tag'];
+ }
+ else {
+ url = askbot['urls']['mark_ignored_tag'];
+ }
+ }
+ else {
+ url = askbot['urls']['unmark_tag'];
+ }
+
+ var call_settings = {
+ type:'POST',
+ url:url,
+ data: JSON.stringify({tagnames: tagnames}),
+ dataType: 'json'
+ };
+ if (callback !== false){
+ call_settings.success = callback;
+ }
+ $.ajax(call_settings);
+ };
+
+ var unpickTag = function(from_target, tagname, reason, send_ajax){
+ //send ajax request to delete tag
+ var deleteTagLocally = function(){
+ from_target[tagname].remove();
+ delete from_target[tagname];
+ };
+ if (send_ajax){
+ sendAjax(
+ [tagname],
+ reason,
+ 'remove',
+ function(){
+ deleteTagLocally();
+ liveSearch().refresh();
+ }
+ );
+ }
+ else {
+ deleteTagLocally();
+ }
+ };
+
+ var getTagList = function(reason){
+ var base_selector = '.marked-tags';
+ if (reason === 'good'){
+ var extra_selector = '.interesting';
+ } else {
+ var extra_selector = '.ignored';
+ }
+ return $(base_selector + extra_selector);
+ };
+
+ var getWildcardTagDetailBox = function(reason){
+ if (reason === 'good'){
+ return interestingTagDetailBox;
+ } else {
+ return ignoredTagDetailBox;
+ }
+ };
+
+ var handleWildcardTagClick = function(tag_name, reason){
+ var detail_box = getWildcardTagDetailBox(reason);
+ var tag_box = getTagList(reason);
+ if (detail_box.isBlank()){
+ detail_box.renderFor(tag_name);
+ } else if (detail_box.belongsTo(tag_name)){
+ detail_box.clear();//toggle off
+ } else {
+ detail_box.clear();//redraw with new data
+ detail_box.renderFor(tag_name);
+ }
+ if (!detail_box.inDocument()){
+ tag_box.after(detail_box.getElement());
+ detail_box.enterDocument();
+ }
+ };
+
+ var renderNewTags = function(
+ clean_tag_names,
+ reason,
+ to_target,
+ to_tag_container
+ ){
+ $.each(clean_tag_names, function(idx, tag_name){
+ var tag = new Tag();
+ tag.setName(tag_name);
+ tag.setDeletable(true);
+
+ if (/\*$/.test(tag_name)){
+ tag.setLinkable(false);
+ var detail_box = getWildcardTagDetailBox(reason);
+ tag.setHandler(function(){
+ handleWildcardTagClick(tag_name, reason);
+ if (detail_box.belongsTo(tag_name)){
+ detail_box.clear();
+ }
+ });
+ var delete_handler = function(){
+ unpickTag(to_target, tag_name, reason, true);
+ if (detail_box.belongsTo(tag_name)){
+ detail_box.clear();
+ }
+ }
+ } else {
+ var delete_handler = function(){
+ unpickTag(to_target, tag_name, reason, true);
+ }
+ }
+
+ tag.setDeleteHandler(delete_handler);
+ var tag_element = tag.getElement();
+ to_tag_container.append(tag_element);
+ to_target[tag_name] = tag_element;
+ });
+ };
+
+ var handlePickedTag = function(reason){
+ var to_target = interestingTags;
+ var from_target = ignoredTags;
+ var to_tag_container;
+ if (reason == 'bad'){
+ var input_sel = '#ignoredTagInput';
+ to_target = ignoredTags;
+ from_target = interestingTags;
+ to_tag_container = $('div .tags.ignored');
+ }
+ else if (reason == 'good'){
+ var input_sel = '#interestingTagInput';
+ to_tag_container = $('div .tags.interesting');
+ }
+ 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);
+ }
+ });
+
+ var clean_tagnames = [];
+ $.each(tagnames, function(idx, tagname){
+ if (!(tagname in to_target)){
+ clean_tagnames.push(tagname);
+ }
+ });
+
+ if (clean_tagnames.length > 0){
+ //send ajax request to pick this tag
+
+ sendAjax(
+ clean_tagnames,
+ reason,
+ 'add',
+ function(){
+ renderNewTags(
+ clean_tagnames,
+ reason,
+ to_target,
+ to_tag_container
+ );
+ $(input_sel).val('');
+ liveSearch().refresh();
+ }
+ );
+ }
+ };
+
+ var collectPickedTags = function(section){
+ if (section === 'interesting'){
+ var reason = 'good';
+ var tag_store = interestingTags;
+ }
+ else if (section === 'ignored'){
+ var reason = 'bad';
+ var tag_store = ignoredTags;
+ }
+ else {
+ return;
+ }
+ $('.' + section + '.tags.marked-tags .tag-left').each(
+ function(i,item){
+ var tag = new Tag();
+ tag.decorate($(item));
+ tag.setDeleteHandler(function(){
+ unpickTag(
+ tag_store,
+ tag.getName(),
+ reason,
+ true
+ )
+ });
+ if (tag.isWildcard()){
+ tag.setHandler(function(){
+ handleWildcardTagClick(tag.getName(), reason)
+ });
+ }
+ tag_store[tag.getName()] = $(item);
+ }
+ );
+ };
+
+ var setupTagFilterControl = function(control_type){
+ $('#' + control_type + 'TagFilterControl input')
+ .unbind('click')
+ .click(function(){
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ url: askbot['urls']['set_tag_filter_strategy'],
+ data: {
+ filter_type: control_type,
+ filter_value: $(this).val()
+ },
+ success: function(){
+ liveSearch().refresh();
+ }
+ });
+ });
+ };
+
+ var getResultCallback = function(reason){
+ return function(){
+ handlePickedTag(reason);
+ };
+ };
+
+ return {
+ init: function(){
+ collectPickedTags('interesting');
+ collectPickedTags('ignored');
+ setupTagFilterControl('display');
+ var ac = new AutoCompleter({
+ url: askbot['urls']['get_tag_list'],
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: true,
+ maxCacheLength: 100,
+ delay: 10
+ });
+
+
+ var interestingTagAc = $.extend(true, {}, ac);
+ interestingTagAc.decorate($('#interestingTagInput'));
+ interestingTagAc.setOption('onItemSelect', getResultCallback('good'));
+
+ var ignoredTagAc = $.extend(true, {}, ac);
+ ignoredTagAc.decorate($('#ignoredTagInput'));
+ ignoredTagAc.setOption('onItemSelect', getResultCallback('bad'));
+
+ $("#interestingTagAdd").click(getResultCallback('good'));
+ $("#ignoredTagAdd").click(getResultCallback('bad'));
+ }
+ };
+}
+
+$(document).ready( function(){
+ pickedTags().init();
+});
diff --git a/askbot/skins/default/media/js/user.js b/askbot/skins/old/media/js/user.js
index 438a3273..438a3273 100644
--- a/askbot/skins/default/media/js/user.js
+++ b/askbot/skins/old/media/js/user.js
diff --git a/askbot/skins/old/media/js/utils.js b/askbot/skins/old/media/js/utils.js
new file mode 100644
index 00000000..ba321e04
--- /dev/null
+++ b/askbot/skins/old/media/js/utils.js
@@ -0,0 +1,423 @@
+//var $, scriptUrl, askbotSkin
+var mediaUrl = function(resource){
+ return scriptUrl + 'm/' + askbotSkin + '/' + resource;
+};
+
+var cleanUrl = function(url){
+ var re = new RegExp('//', 'g');
+ return url.replace(re, '/');
+};
+
+var copyAltToTitle = function(sel){
+ sel.attr('title', sel.attr('alt'));
+};
+
+var getUniqueWords = function(value){
+ var words = $.trim(value).split(/\s+/);
+ var uniques = new Object();
+ var out = new Array();
+ $.each(words, function(idx, item){
+ if (!(item in uniques)){
+ uniques[item] = 1;
+ out.push(item);
+ };
+ });
+ return out;
+};
+
+var showMessage = function(element, msg, where) {
+ var div = $('<div class="vote-notification"><h3>' + msg + '</h3>(' +
+ $.i18n._('click to close') + ')</div>');
+
+ div.click(function(event) {
+ $(".vote-notification").fadeOut("fast", function() { $(this).remove(); });
+ });
+
+ var where = where || 'parent';
+
+ if (where == 'parent'){
+ element.parent().append(div);
+ }
+ else {
+ element.after(div);
+ }
+
+ div.fadeIn("fast");
+};
+
+//outer html hack - https://github.com/brandonaaron/jquery-outerhtml/
+(function($){
+ var div;
+ $.fn.outerHTML = function() {
+ var elem = this[0],
+ tmp;
+ return !elem ? null
+ : typeof ( tmp = elem.outerHTML ) === 'string' ? tmp
+ : ( div = div || $('<div/>') ).html( this.eq(0).clone() ).html();
+ };
+})(jQuery);
+
+var makeKeyHandler = function(key, callback){
+ return function(e){
+ if ((e.which && e.which == key) || (e.keyCode && e.keyCode == key)){
+ if(!e.shiftKey){
+ callback();
+ return false;
+ }
+ }
+ };
+};
+
+
+var setupButtonEventHandlers = function(button, callback){
+ button.keydown(makeKeyHandler(13, callback));
+ button.click(callback);
+};
+
+
+var putCursorAtEnd = function(element){
+ var el = element.get()[0];
+ if (el.setSelectionRange){
+ var len = element.val().length * 2;
+ el.setSelectionRange(len, len);
+ }
+ else{
+ element.val(element.val());
+ }
+ element.scrollTop = 999999;
+};
+
+var setCheckBoxesIn = function(selector, value){
+ return $(selector + '> input[type=checkbox]').attr('checked', value);
+};
+
+var notify = function() {
+ var visible = false;
+ return {
+ show: function(html) {
+ if (html) {
+ $("body").css("margin-top", "2.2em");
+ $(".notify span").html(html);
+ }
+ $(".notify").fadeIn("slow");
+ visible = true;
+ },
+ close: function(doPostback) {
+ if (doPostback) {
+ $.post(
+ askbot['urls']['mark_read_message'],
+ { formdata: "required" }
+ );
+ }
+ $(".notify").fadeOut("fast");
+ $("body").css("margin-top", "0");
+ visible = false;
+ },
+ isVisible: function() { return visible; }
+ };
+} ();
+
+/* some google closure-like code for the ui elements */
+var inherits = function(childCtor, parentCtor) {
+ /** @constructor taken from google closure */
+ function tempCtor() {};
+ tempCtor.prototype = parentCtor.prototype;
+ childCtor.superClass_ = parentCtor.prototype;
+ childCtor.prototype = new tempCtor();
+ childCtor.prototype.constructor = childCtor;
+};
+
+/* wrapper around jQuery object */
+var WrappedElement = function(){
+ this._element = null;
+ this._in_document = false;
+};
+WrappedElement.prototype.setElement = function(element){
+ this._element = element;
+};
+WrappedElement.prototype.createDom = function(){
+ this._element = $('<div></div>');
+};
+WrappedElement.prototype.getElement = function(){
+ if (this._element === null){
+ this.createDom();
+ }
+ return this._element;
+};
+WrappedElement.prototype.inDocument = function(){
+ return this._in_document;
+};
+WrappedElement.prototype.enterDocument = function(){
+ return this._in_document = true;
+};
+WrappedElement.prototype.hasElement = function(){
+ return (this._element !== null);
+};
+WrappedElement.prototype.makeElement = function(html_tag){
+ //makes jQuery element with tags
+ return $('<' + html_tag + '></' + html_tag + '>');
+};
+WrappedElement.prototype.dispose = function(){
+ this._element.remove();
+ this._in_document = false;
+};
+
+var SimpleControl = function(){
+ WrappedElement.call(this);
+ this._handler = null;
+ this._title = null;
+};
+inherits(SimpleControl, WrappedElement);
+
+SimpleControl.prototype.setHandler = function(handler){
+ this._handler = handler;
+ if (this.hasElement()){
+ this.setHandlerInternal();
+ }
+};
+
+SimpleControl.prototype.setHandlerInternal = function(){
+ //default internal setHandler behavior
+ setupButtonEventHandlers(this._element, this._handler);
+};
+
+SimpleControl.prototype.setTitle = function(title){
+ this._title = title;
+};
+
+var EditLink = function(){
+ SimpleControl.call(this)
+};
+inherits(EditLink, SimpleControl);
+
+EditLink.prototype.createDom = function(){
+ var element = $('<a></a>');
+ element.addClass('edit');
+ this.decorate(element);
+};
+
+EditLink.prototype.decorate = function(element){
+ this._element = element;
+ this._element.attr('title', $.i18n._('click to edit this comment'));
+ this._element.html($.i18n._('edit'));
+ this.setHandlerInternal();
+};
+
+var DeleteIcon = function(title){
+ SimpleControl.call(this);
+ this._title = title;
+};
+inherits(DeleteIcon, SimpleControl);
+
+DeleteIcon.prototype.decorate = function(element){
+ this._element = element;
+ this._element.attr('class', 'delete-icon');
+ this._element.attr('title', this._title);
+ if (this._handler !== null){
+ this.setHandlerInternal();
+ }
+};
+
+DeleteIcon.prototype.setHandlerInternal = function(){
+ setupButtonEventHandlers(this._element, this._handler);
+};
+
+DeleteIcon.prototype.createDom = function(){
+ this._element = this.makeElement('span');
+ this.decorate(this._element);
+};
+
+var Tag = function(){
+ SimpleControl.call(this);
+ this._deletable = false;
+ this._delete_handler = null;
+ this._delete_icon_title = null;
+ this._tag_title = null;
+ this._name = null;
+ this._url_params = null;
+ this._inner_html_tag = 'a';
+ this._html_tag = 'li';
+}
+inherits(Tag, SimpleControl);
+
+Tag.prototype.setName = function(name){
+ this._name = name;
+};
+
+Tag.prototype.getName = function(){
+ return this._name;
+};
+
+Tag.prototype.setHtmlTag = function(html_tag){
+ this._html_tag = html_tag;
+};
+
+Tag.prototype.setDeletable = function(is_deletable){
+ this._deletable = is_deletable;
+};
+
+Tag.prototype.setLinkable = function(is_linkable){
+ if (is_linkable === true){
+ this._inner_html_tag = 'a';
+ } else {
+ this._inner_html_tag = 'span';
+ }
+};
+
+Tag.prototype.isLinkable = function(){
+ return (this._inner_html_tag === 'a');
+};
+
+Tag.prototype.isDeletable = function(){
+ return this._deletable;
+};
+
+Tag.prototype.isWildcard = function(){
+ return (this.getName().substr(-1) === '*');
+};
+
+Tag.prototype.setUrlParams = function(url_params){
+ this._url_params = url_params;
+};
+
+Tag.prototype.setHandlerInternal = function(){
+ setupButtonEventHandlers(this._element.find('.tag'), this._handler);
+};
+
+/* delete handler will be specific to the task */
+Tag.prototype.setDeleteHandler = function(delete_handler){
+ this._delete_handler = delete_handler;
+ if (this.hasElement() && this.isDeletable()){
+ this._delete_icon.setHandler(delete_handler);
+ }
+};
+
+Tag.prototype.getDeleteHandler = function(){
+ return this._delete_handler;
+};
+
+Tag.prototype.setDeleteIconTitle = function(title){
+ this._delete_icon_title = title;
+};
+
+Tag.prototype.decorate = function(element){
+ this._element = element;
+ var del = element.find('.delete-icon');
+ if (del.length === 1){
+ this.setDeletable(true);
+ this._delete_icon = new DeleteIcon();
+ if (this._delete_icon_title != null){
+ this._delete_icon.setTitle(this._delete_icon_title);
+ }
+ //do not set the delete handler here
+ this._delete_icon.decorate(del);
+ }
+ this._inner_element = this._element.find('.tag');
+ this._name = this.decodeTagName($.trim(this._inner_element.html()));
+ if (this._title !== null){
+ this._inner_element.attr('title', this._title);
+ }
+ if (this._handler !== null){
+ this.setHandlerInternal();
+ }
+};
+
+Tag.prototype.getDisplayTagName = function(){
+ //replaces the trailing * symbol with the unicode asterisk
+ return this._name.replace(/\*$/, '&#10045;');
+};
+
+Tag.prototype.decodeTagName = function(encoded_name){
+ return encoded_name.replace('\u273d', '*');
+};
+
+Tag.prototype.createDom = function(){
+ this._element = this.makeElement(this._html_tag);
+ //render the outer element
+ if (this._deletable){
+ this._element.addClass('deletable-tag');
+ }
+ this._element.addClass('tag-left');
+
+ //render the inner element
+ this._inner_element = this.makeElement(this._inner_html_tag);
+ if (this.isLinkable()){
+ var url = askbot['urls']['questions'];
+ var flag = false
+ var author = ''
+ if (this._url_params !== null){
+ params = this._url_params.split('/')
+ for (var i = 0; i < params.length; i++){
+ if (params[i] !== ''){
+ if (params[i].substring(0, 5) == "tags:"){
+ tags = params[i].substr(5).split('+');
+ new_tags = ''
+ for(var j = 0; j < tags.length; j++){
+ if(escape(tags[j]) !== escape(this.getName())){
+ new_tags += escape(tags[j]) + '+';
+ }
+ }
+ new_tags += escape(this.getName())
+ url += 'tags:'+new_tags+'/'
+ flag = true
+ }
+ else if (params[i].substring(0, 7) == "author:"){
+ author = params[i];
+ }
+ else{
+ url += params[i] + '/';
+ }
+ }
+ }
+ if (flag == false) {
+ url += 'tags:'+escape(this.getName())+'/'
+ }
+ if (author !== '') {
+ url += author+'/'
+ }
+ }
+ else{
+ url += 'tags:' + escape(this.getName()) + '/';
+ }
+ this._inner_element.attr('href', url);
+ }
+ this._inner_element.addClass('tag tag-right');
+ this._inner_element.attr('rel', 'tag');
+ if (this._title === null){
+ this.setTitle(
+ $.i18n._(
+ "see questions tagged '{tag}'"
+ ).replace(
+ '{tag}',
+ this.getName()
+ )
+ );
+ }
+ this._inner_element.attr('title', this._title);
+ this._inner_element.html(this.getDisplayTagName());
+
+ this._element.append(this._inner_element);
+
+ if (!this.isLinkable() && this._handler !== null){
+ this.setHandlerInternal();
+ }
+
+ if (this._deletable){
+ this._delete_icon = new DeleteIcon();
+ this._delete_icon.setHandler(this.getDeleteHandler());
+ if (this._delete_icon_title !== null){
+ this._delete_icon.setTitle(this._delete_icon_title);
+ }
+ this._element.append(this._delete_icon.getElement());
+ }
+};
+
+//Search Engine Keyword Highlight with Javascript
+//http://scott.yang.id.au/code/se-hilite/
+Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["local","q"],["cnprog\\.","q"],["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c<Hilite.search_engines.length;c++){var f=Hilite.search_engines[c];e.compile("^http://(www\\.)?"+f[0],"i");var b=d.match(e);if(b){var a;if(isNaN(f[1])){a=Hilite.decodeReferrerQS(d,f[1])}else{a=b[f[1]+1]}if(a){a=decodeURIComponent(a);if(f.length>2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b<e.length;b++){e[b]=e[b].toLowerCase();if(Hilite.exact){c.push("\\b"+e[b]+"\\b")}else{c.push(e[b])}}c=new RegExp(c.join("|"),"i");var a={};for(var b=0;b<e.length;b++){if(Hilite.style_name_suffix){a[e[b]]=Hilite.style_name+(b+1)}else{a[e[b]]=Hilite.style_name}}var d=function(m){var j=c.exec(m.data);if(j){var n=j[0];var i="";var h=m.splitText(j.index);var g=h.splitText(n.length);var l=m.ownerDocument.createElement("SPAN");m.parentNode.replaceChild(l,h);l.className=a[n.toLowerCase()];l.appendChild(h);return l}else{return m}};Hilite.walkElements(f.childNodes[0],1,d)};Hilite.hilite=function(){var a=Hilite.debug_referrer?Hilite.debug_referrer:document.referrer;var b=null;a=Hilite.decodeReferrer(a);if(a&&((Hilite.elementid&&(b=document.getElementById(Hilite.elementid)))||(b=document.body))){Hilite.hiliteElement(b,a)}};Hilite.walkElements=function(d,f,e){var a=/^(script|style|textarea)/i;var c=0;while(d&&f>0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}};
+/* json2.js by D. Crockford */
+if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){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(key){return this.valueOf()}}var 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;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(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,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
+//jquery fieldselection
+(function(){var a={getSelection:function(){var b=this.jquery?this[0]:this;return(("selectionStart" in b&&function(){var c=b.selectionEnd-b.selectionStart;return{start:b.selectionStart,end:b.selectionEnd,length:c,text:b.value.substr(b.selectionStart,c)}})||(document.selection&&function(){b.focus();var d=document.selection.createRange();if(d==null){return{start:0,end:b.value.length,length:0}}var c=b.createTextRange();var e=c.duplicate();c.moveToBookmark(d.getBookmark());e.setEndPoint("EndToStart",c);return{start:e.text.length,end:e.text.length+d.text.length,length:d.text.length,text:d.text}})||function(){return{start:0,end:b.value.length,length:0}})()},replaceSelection:function(){var b=this.jquery?this[0]:this;var c=arguments[0]||"";return(("selectionStart" in b&&function(){b.value=b.value.substr(0,b.selectionStart)+c+b.value.substr(b.selectionEnd,b.value.length);return this})||(document.selection&&function(){b.focus();document.selection.createRange().text=c;return this})||function(){b.value+=c;return this})()}};jQuery.each(a,function(b){jQuery.fn[b]=this})})();
+//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)};
diff --git a/askbot/skins/old/media/js/wmd/images/wmd-buttons.png b/askbot/skins/old/media/js/wmd/images/wmd-buttons.png
new file mode 100755
index 00000000..3013a4ad
--- /dev/null
+++ b/askbot/skins/old/media/js/wmd/images/wmd-buttons.png
Binary files differ
diff --git a/askbot/skins/old/media/js/wmd/showdown-min.js b/askbot/skins/old/media/js/wmd/showdown-min.js
new file mode 100644
index 00000000..073613b1
--- /dev/null
+++ b/askbot/skins/old/media/js/wmd/showdown-min.js
@@ -0,0 +1 @@
+var Attacklab=Attacklab||{};Attacklab.showdown=Attacklab.showdown||{};Attacklab.showdown.converter=function(){var a;var j;var A;var i=0;this.makeHtml=function(H){a=new Array();j=new Array();A=new Array();H=H.replace(/~/g,"~T");H=H.replace(/\$/g,"~D");H=H.replace(/\r\n/g,"\n");H=H.replace(/\r/g,"\n");H="\n\n"+H+"\n\n";H=z(H);H=H.replace(/^[ \t]+$/mg,"");H=m(H);H=d(H);H=G(H);H=q(H);H=H.replace(/~D/g,"$$");H=H.replace(/~T/g,"~");return H};var d=function(H){var H=H.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm,function(K,M,L,J,I){M=M.toLowerCase();a[M]=h(L);if(J){return J+I}else{if(I){j[M]=I.replace(/"/g,"&quot;")}}return""});return H};var m=function(J){J=J.replace(/\n/g,"\n\n");var I="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del";var H="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";J=J.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,x);J=J.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,x);J=J.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,x);J=J.replace(/(\n\n[ ]{0,3}<!(--[^\r]*?--\s*)+>[ \t]*(?=\n{2,}))/g,x);J=J.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,x);J=J.replace(/\n\n/g,"\n");return J};var x=function(H,I){var J=I;J=J.replace(/\n\n/g,"\n");J=J.replace(/^\n/,"");J=J.replace(/\n+$/g,"");J="\n\n~K"+(A.push(J)-1)+"K\n\n";return J};var G=function(I){I=f(I);var H=o("<hr />");I=I.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,H);I=I.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,H);I=I.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,H);I=E(I);I=b(I);I=u(I);I=m(I);I=g(I);return I};var r=function(H){H=C(H);H=l(H);H=e(H);H=F(H);H=y(H);H=n(H);H=h(H);H=c(H);H=H.replace(/ +\n/g," <br />\n");return H};var l=function(I){var H=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--.*?--\s*)+>)/gi;I=I.replace(H,function(K){var J=K.replace(/(.)<\/?code>(?=.)/g,"$1`");J=w(J,"\\`*_");return J});return I};var y=function(H){H=H.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,D);H=H.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?(.*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,D);H=H.replace(/(\[([^\[\]]+)\])()()()()()/g,D);return H};var D=function(N,T,S,R,Q,P,M,L){if(L==undefined){L=""}var K=T;var I=S;var J=R.toLowerCase();var H=Q;var O=L;if(H==""){if(J==""){J=I.toLowerCase().replace(/ ?\n/g," ")}H="#"+J;if(a[J]!=undefined){H=a[J];if(j[J]!=undefined){O=j[J]}}else{if(K.search(/\(\s*\)$/m)>-1){H=""}else{return K}}}H=w(H,"*_");var U='<a href="'+H+'"';if(O!=""){O=O.replace(/"/g,"&quot;");O=w(O,"*_");U+=' title="'+O+'"'}U+=">"+I+"</a>";return U};var F=function(H){H=H.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,t);H=H.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,t);return H};var t=function(N,T,S,R,Q,P,M,L){var K=T;var J=S;var I=R.toLowerCase();var H=Q;var O=L;if(!O){O=""}if(H==""){if(I==""){I=J.toLowerCase().replace(/ ?\n/g," ")}H="#"+I;if(a[I]!=undefined){H=a[I];if(j[I]!=undefined){O=j[I]}}else{return K}}J=J.replace(/"/g,"&quot;");H=w(H,"*_");var U='<img src="'+H+'" alt="'+J+'"';O=O.replace(/"/g,"&quot;");O=w(O,"*_");U+=' title="'+O+'"';U+=" />";return U};var f=function(H){H=H.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(I,J){return o("<h1>"+r(J)+"</h1>")});H=H.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(J,I){return o("<h2>"+r(I)+"</h2>")});H=H.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(I,L,K){var J=L.length;return o("<h"+J+">"+r(K)+"</h"+J+">")});return H};var p;var E=function(I){I+="~0";var H=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;if(i){I=I.replace(H,function(K,N,M){var O=N;var L=(M.search(/[*+-]/g)>-1)?"ul":"ol";O=O.replace(/\n{2,}/g,"\n\n\n");var J=p(O);J=J.replace(/\s+$/,"");J="<"+L+">"+J+"</"+L+">\n";return J})}else{H=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;I=I.replace(H,function(L,P,N,K){var O=P;var Q=N;var M=(K.search(/[*+-]/g)>-1)?"ul":"ol";var Q=Q.replace(/\n{2,}/g,"\n\n\n");var J=p(Q);J=O+"<"+M+">\n"+J+"</"+M+">\n";return J})}I=I.replace(/~0/,"");return I};p=function(H){i++;H=H.replace(/\n{2,}$/,"\n");H+="~0";H=H.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(K,M,L,J,I){var O=I;var N=M;var P=L;if(N||(O.search(/\n{2,}/)>-1)){O=G(s(O))}else{O=E(s(O));O=O.replace(/\n$/,"");O=r(O)}return"<li>"+O+"</li>\n"});H=H.replace(/~0/g,"");i--;return H};var b=function(H){H+="~0";H=H.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(I,K,J){var L=K;var M=J;L=v(s(L));L=z(L);L=L.replace(/^\n+/g,"");L=L.replace(/\n+$/g,"");L="<pre><code>"+L+"\n</code></pre>";return o(L)+M});H=H.replace(/~0/,"");return H};var o=function(H){H=H.replace(/(^\n+|\n+$)/g,"");return"\n\n~K"+(A.push(H)-1)+"K\n\n"};var C=function(H){H=H.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(K,M,L,J,I){var N=J;N=N.replace(/^([ \t]*)/g,"");N=N.replace(/[ \t]*$/g,"");N=v(N);return M+"<code>"+N+"</code>"});return H};var v=function(H){H=H.replace(/&/g,"&amp;");H=H.replace(/</g,"&lt;");H=H.replace(/>/g,"&gt;");H=w(H,"*_{}[]\\",false);return H};var c=function(H){H=H.replace(/(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\1/g,"<strong>$2</strong>");H=H.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"<em>$2</em>");return H};var u=function(H){H=H.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(I,J){var K=J;K=K.replace(/^[ \t]*>[ \t]?/gm,"~0");K=K.replace(/~0/g,"");K=K.replace(/^[ \t]+$/gm,"");K=G(K);K=K.replace(/(^|\n)/g,"$1 ");K=K.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm,function(L,M){var N=M;N=N.replace(/^ /mg,"~0");N=N.replace(/~0/g,"");return N});return o("<blockquote>\n"+K+"\n</blockquote>")});return H};var g=function(N){N=N.replace(/^\n+/g,"");N=N.replace(/\n+$/g,"");var M=N.split(/\n{2,}/g);var J=new Array();var H=M.length;for(var I=0;I<H;I++){var L=M[I];if(L.search(/~K(\d+)K/g)>=0){J.push(L)}else{if(L.search(/\S/)>=0){L=r(L);L=L.replace(/^([ \t]*)/g,"<p>");L+="</p>";J.push(L)}}}H=J.length;for(var I=0;I<H;I++){while(J[I].search(/~K(\d+)K/)>=0){var K=A[RegExp.$1];K=K.replace(/\$/g,"$$$$");J[I]=J[I].replace(/~K\d+K/,K)}}return J.join("\n\n")};var h=function(H){H=H.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");H=H.replace(/<(?![a-z\/?\$!])/gi,"&lt;");return H};var e=function(H){H=H.replace(/\\(\\)/g,k);H=H.replace(/\\([`*_{}\[\]()>#+-.!])/g,k);return H};var n=function(H){H=H.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'<a href="$1">$1</a>');H=H.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(I,J){return B(q(J))});return H};var B=function(J){function I(L){var K="0123456789ABCDEF";var M=L.charCodeAt(0);return(K.charAt(M>>4)+K.charAt(M&15))}var H=[function(K){return"&#"+K.charCodeAt(0)+";"},function(K){return"&#x"+I(K)+";"},function(K){return K}];J="mailto:"+J;J=J.replace(/./g,function(K){if(K=="@"){K=H[Math.floor(Math.random()*2)](K)}else{if(K!=":"){var L=Math.random();K=(L>0.9?H[2](K):L>0.45?H[1](K):H[0](K))}}return K});J='<a href="'+J+'">'+J+"</a>";J=J.replace(/">.+:/g,'">');return J};var q=function(H){H=H.replace(/~E(\d+)E/g,function(I,K){var J=parseInt(K);return String.fromCharCode(J)});return H};var s=function(H){H=H.replace(/^(\t|[ ]{1,4})/gm,"~0");H=H.replace(/~0/g,"");return H};var z=function(H){H=H.replace(/\t(?=\t)/g," ");H=H.replace(/\t/g,"~A~B");H=H.replace(/~B(.+?)~A/g,function(I,L,K){var N=L;var J=4-N.length%4;for(var M=0;M<J;M++){N+=" "}return N});H=H.replace(/~A/g," ");H=H.replace(/~B/g,"");return H};var w=function(L,I,J){var H="(["+I.replace(/([\[\]\\])/g,"\\$1")+"])";if(J){H="\\\\"+H}var K=new RegExp(H,"g");L=L.replace(K,k);return L};var k=function(H,J){var I=J.charCodeAt(0);return"~E"+I+"E"}};var Showdown=Attacklab.showdown;if(Attacklab.fileLoaded){Attacklab.fileLoaded("showdown.js")}; \ No newline at end of file
diff --git a/askbot/skins/old/media/js/wmd/showdown.js b/askbot/skins/old/media/js/wmd/showdown.js
new file mode 100644
index 00000000..257b8bd1
--- /dev/null
+++ b/askbot/skins/old/media/js/wmd/showdown.js
@@ -0,0 +1,1332 @@
+//
+// showdown.js -- A javascript port of Markdown.
+//
+// Copyright (c) 2007 John Fraser.
+//
+// Original Markdown Copyright (c) 2004-2005 John Gruber
+// <http://daringfireball.net/projects/markdown/>
+//
+// Redistributable under a BSD-style open source license.
+// See license.txt for more information.
+//
+// The full source distribution is at:
+//
+// A A L
+// T C A
+// T K B
+//
+// <http://www.attacklab.net/>
+//
+
+//
+// Wherever possible, Showdown is a straight, line-by-line port
+// of the Perl version of Markdown.
+//
+// This is not a normal parser design; it's basically just a
+// series of string substitutions. It's hard to read and
+// maintain this way, but keeping Showdown close to the original
+// design makes it easier to port new features.
+//
+// More importantly, Showdown behaves like markdown.pl in most
+// edge cases. So web applications can do client-side preview
+// in Javascript, and then build identical HTML on the server.
+//
+// This port needs the new RegExp functionality of ECMA 262,
+// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers
+// should do fine. Even with the new regular expression features,
+// We do a lot of work to emulate Perl's regex functionality.
+// The tricky changes in this file mostly have the "attacklab:"
+// label. Major or self-explanatory changes don't.
+//
+// Smart diff tools like Araxis Merge will be able to match up
+// this file with markdown.pl in a useful way. A little tweaking
+// helps: in a copy of markdown.pl, replace "#" with "//" and
+// replace "$text" with "text". Be sure to ignore whitespace
+// and line endings.
+//
+
+
+//
+// Showdown usage:
+//
+// var text = "Markdown *rocks*.";
+//
+// var converter = new Attacklab.showdown.converter();
+// var html = converter.makeHtml(text);
+//
+// alert(html);
+//
+// Note: move the sample code to the bottom of this
+// file before uncommenting it.
+//
+
+
+//
+// Attacklab namespace
+//
+var Attacklab = Attacklab || {}
+
+//
+// Showdown namespace
+//
+Attacklab.showdown = Attacklab.showdown || {}
+
+//
+// converter
+//
+// Wraps all "globals" so that the only thing
+// exposed is makeHtml().
+//
+Attacklab.showdown.converter = function() {
+
+//
+// Globals:
+//
+
+// Global hashes, used by various utility routines
+var g_urls;
+var g_titles;
+var g_html_blocks;
+
+// Used to track when we're inside an ordered or unordered list
+// (see _ProcessListItems() for details):
+var g_list_level = 0;
+
+var makeHtmlBase = function(text) {
+//
+// Main function. The order in which other subs are called here is
+// essential. Link and image substitutions need to happen before
+// _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the <a>
+// and <img> tags get encoded.
+//
+
+ // Clear the global hashes. If we don't clear these, you get conflicts
+ // from other articles when generating a page which contains more than
+ // one article (e.g. an index page that shows the N most recent
+ // articles):
+ g_urls = new Array();
+ g_titles = new Array();
+ g_html_blocks = new Array();
+
+ // attacklab: Replace ~ with ~T
+ // This lets us use tilde as an escape char to avoid md5 hashes
+ // The choice of character is arbitray; anything that isn't
+ // magic in Markdown will work.
+ text = text.replace(/~/g,"~T");
+
+ // attacklab: Replace $ with ~D
+ // RegExp interprets $ as a special character
+ // when it's in a replacement string
+ text = text.replace(/\$/g,"~D");
+
+ // Standardize line endings
+ text = text.replace(/\r\n/g,"\n"); // DOS to Unix
+ text = text.replace(/\r/g,"\n"); // Mac to Unix
+
+ // Make sure text begins and ends with a couple of newlines:
+ text = "\n\n" + text + "\n\n";
+
+ // Convert all tabs to spaces.
+ text = _Detab(text);
+
+ // Strip any lines consisting only of spaces and tabs.
+ // This makes subsequent regexen easier to write, because we can
+ // match consecutive blank lines with /\n+/ instead of something
+ // contorted like /[ \t]*\n+/ .
+ text = text.replace(/^[ \t]+$/mg,"");
+
+ // Turn block-level HTML blocks into hash entries
+ text = _HashHTMLBlocks(text);
+
+ // Strip link definitions, store in hashes.
+ text = _StripLinkDefinitions(text);
+
+ text = _RunBlockGamut(text);
+
+ text = _UnescapeSpecialChars(text);
+
+ // attacklab: Restore dollar signs
+ text = text.replace(/~D/g,"$$");
+
+ // attacklab: Restore tildes
+ text = text.replace(/~T/g,"~");
+
+ return text;
+}
+
+this.makeHtml = function(text){
+ if (enableMathJax === false){
+ return makeHtmlBase(text);
+ }
+ else {
+ MathJax.Hub.queue.Push(
+ function(){
+ $('#previewer').html(makeHtmlBase(text));
+ }
+ );
+ MathJax.Hub.Queue(['Typeset', MathJax.Hub, 'previewer']);
+ return $('#previewer').html();
+ }
+}
+
+
+var _StripLinkDefinitions = function(text) {
+//
+// Strips link definitions from text, stores the URLs and titles in
+// hash references.
+//
+
+ // Link defs are in the form: ^[id]: url "optional title"
+
+ /*
+ var text = text.replace(/
+ ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1
+ [ \t]*
+ \n? // maybe *one* newline
+ [ \t]*
+ <?(\S+?)>? // url = $2
+ [ \t]*
+ \n? // maybe one newline
+ [ \t]*
+ (?:
+ (\n*) // any lines skipped = $3 attacklab: lookbehind removed
+ ["(]
+ (.+?) // title = $4
+ [")]
+ [ \t]*
+ )? // title is optional
+ (?:\n+|$)
+ /gm,
+ function(){...});
+ */
+ var text = text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm,
+ function (wholeMatch,m1,m2,m3,m4) {
+ m1 = m1.toLowerCase();
+ g_urls[m1] = _EncodeAmpsAndAngles(m2); // Link IDs are case-insensitive
+ if (m3) {
+ // Oops, found blank lines, so it's not a title.
+ // Put back the parenthetical statement we stole.
+ return m3+m4;
+ } else if (m4) {
+ g_titles[m1] = m4.replace(/"/g,"&quot;");
+ }
+
+ // Completely remove the definition from the text
+ return "";
+ }
+ );
+
+ return text;
+}
+
+var _HashHTMLBlocks = function(text) {
+ // attacklab: Double up blank lines to reduce lookaround
+ text = text.replace(/\n/g,"\n\n");
+
+ // Hashify HTML blocks:
+ // We only want to do this for block-level HTML tags, such as headers,
+ // lists, and tables. That's because we still want to wrap <p>s around
+ // "paragraphs" that are wrapped in non-block-level tags, such as anchors,
+ // phrase emphasis, and spans. The list of tags we're looking for is
+ // hard-coded:
+ var block_tags_a = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del"
+ var block_tags_b = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math"
+
+ // First, look for nested blocks, e.g.:
+ // <div>
+ // <div>
+ // tags for inner block must be indented.
+ // </div>
+ // </div>
+ //
+ // The outermost tags must start at the left margin for this to match, and
+ // the inner nested divs must be indented.
+ // We need to do this before the next, more liberal match, because the next
+ // match will start at the first `<div>` and stop at the first `</div>`.
+
+ // attacklab: This regex can be expensive when it fails.
+ /*
+ var text = text.replace(/
+ ( // save in $1
+ ^ // start of line (with /m)
+ <($block_tags_a) // start tag = $2
+ \b // word break
+ // attacklab: hack around khtml/pcre bug...
+ [^\r]*?\n // any number of lines, minimally matching
+ </\2> // the matching end tag
+ [ \t]* // trailing spaces/tabs
+ (?=\n+) // followed by a newline
+ ) // attacklab: there are sentinel newlines at end of document
+ /gm,function(){...}};
+ */
+ text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,hashElement);
+
+ //
+ // Now match more liberally, simply from `\n<tag>` to `</tag>\n`
+ //
+
+ /*
+ var text = text.replace(/
+ ( // save in $1
+ ^ // start of line (with /m)
+ <($block_tags_b) // start tag = $2
+ \b // word break
+ // attacklab: hack around khtml/pcre bug...
+ [^\r]*? // any number of lines, minimally matching
+ .*</\2> // the matching end tag
+ [ \t]* // trailing spaces/tabs
+ (?=\n+) // followed by a newline
+ ) // attacklab: there are sentinel newlines at end of document
+ /gm,function(){...}};
+ */
+ text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement);
+
+ // Special case just for <hr />. It was easier to make a special case than
+ // to make the other regex more complicated.
+
+ /*
+ text = text.replace(/
+ ( // save in $1
+ \n\n // Starting after a blank line
+ [ ]{0,3}
+ (<(hr) // start tag = $2
+ \b // word break
+ ([^<>])*? //
+ \/?>) // the matching end tag
+ [ \t]*
+ (?=\n{2,}) // followed by a blank line
+ )
+ /g,hashElement);
+ */
+ text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,hashElement);
+
+ // Special case for standalone HTML comments:
+
+ /*
+ text = text.replace(/
+ ( // save in $1
+ \n\n // Starting after a blank line
+ [ ]{0,3} // attacklab: g_tab_width - 1
+ <!
+ (--[^\r]*?--\s*)+
+ >
+ [ \t]*
+ (?=\n{2,}) // followed by a blank line
+ )
+ /g,hashElement);
+ */
+ text = text.replace(/(\n\n[ ]{0,3}<!(--[^\r]*?--\s*)+>[ \t]*(?=\n{2,}))/g,hashElement);
+
+ // PHP and ASP-style processor instructions (<?...?> and <%...%>)
+
+ /*
+ text = text.replace(/
+ (?:
+ \n\n // Starting after a blank line
+ )
+ ( // save in $1
+ [ ]{0,3} // attacklab: g_tab_width - 1
+ (?:
+ <([?%]) // $2
+ [^\r]*?
+ \2>
+ )
+ [ \t]*
+ (?=\n{2,}) // followed by a blank line
+ )
+ /g,hashElement);
+ */
+ text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,hashElement);
+
+ // attacklab: Undo double lines (see comment at top of this function)
+ text = text.replace(/\n\n/g,"\n");
+ return text;
+}
+
+var hashElement = function(wholeMatch,m1) {
+ var blockText = m1;
+
+ // Undo double lines
+ blockText = blockText.replace(/\n\n/g,"\n");
+ blockText = blockText.replace(/^\n/,"");
+
+ // strip trailing blank lines
+ blockText = blockText.replace(/\n+$/g,"");
+
+ // Replace the element text with a marker ("~KxK" where x is its key)
+ blockText = "\n\n~K" + (g_html_blocks.push(blockText)-1) + "K\n\n";
+
+ return blockText;
+};
+
+var _RunBlockGamut = function(text) {
+//
+// These are all the transformations that form block-level
+// tags like paragraphs, headers, and list items.
+//
+ text = _DoHeaders(text);
+
+ // Do Horizontal Rules:
+ var key = hashBlock("<hr />");
+ text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,key);
+ text = text.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,key);
+ text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,key);
+
+ text = _DoLists(text);
+ text = _DoCodeBlocks(text);
+ text = _DoBlockQuotes(text);
+
+ // We already ran _HashHTMLBlocks() before, in Markdown(), but that
+ // was to escape raw HTML in the original Markdown source. This time,
+ // we're escaping the markup we've just created, so that we don't wrap
+ // <p> tags around block-level tags.
+ text = _HashHTMLBlocks(text);
+ text = _FormParagraphs(text);
+
+ return text;
+}
+
+
+var _RunSpanGamut = function(text) {
+//
+// These are all the transformations that occur *within* block-level
+// tags like paragraphs, headers, and list items.
+//
+
+ text = _DoCodeSpans(text);
+ text = _EscapeSpecialCharsWithinTagAttributes(text);
+ text = _EncodeBackslashEscapes(text);
+
+ // Process anchor and image tags. Images must come first,
+ // because ![foo][f] looks like an anchor.
+ text = _DoImages(text);
+ text = _DoAnchors(text);
+
+ // Make links out of things like `<http://example.com/>`
+ // Must come after _DoAnchors(), because you can use < and >
+ // delimiters in inline links like [this](<url>).
+ text = _DoAutoLinks(text);
+ text = _EncodeAmpsAndAngles(text);
+ text = _DoItalicsAndBold(text);
+
+ // Do hard breaks:
+ text = text.replace(/ +\n/g," <br />\n");
+ return text;
+}
+
+var _EscapeSpecialCharsWithinTagAttributes = function(text) {
+//
+// Within tags -- meaning between < and > -- encode [\ ` * _] so they
+// don't conflict with their use in Markdown for code, italics and strong.
+//
+
+ // Build a regex to find HTML tags and comments. See Friedl's
+ // "Mastering Regular Expressions", 2nd Ed., pp. 200-201.
+ var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--.*?--\s*)+>)/gi;
+
+ text = text.replace(regex, function(wholeMatch) {
+ var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g,"$1`");
+ tag = escapeCharacters(tag,"\\`*_");
+ return tag;
+ });
+
+ return text;
+}
+
+var _DoAnchors = function(text) {
+//
+// Turn Markdown link shortcuts into XHTML <a> tags.
+//
+ //
+ // First, handle reference-style links: [link text] [id]
+ //
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ \[
+ (
+ (?:
+ \[[^\]]*\] // allow brackets nested one level
+ |
+ [^\[] // or anything else
+ )*
+ )
+ \]
+
+ [ ]? // one optional space
+ (?:\n[ ]*)? // one optional newline followed by spaces
+
+ \[
+ (.*?) // id = $3
+ \]
+ )()()()() // pad remaining backreferences
+ /g,_DoAnchors_callback);
+ */
+ text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeAnchorTag);
+
+ //
+ // Next, inline-style links: [link text](url "optional title")
+ //
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ \[
+ (
+ (?:
+ \[[^\]]*\] // allow brackets nested one level
+ |
+ [^\[\]] // or anything else
+ )
+ )
+ \]
+ \( // literal paren
+ [ \t]*
+ () // no id, so leave $3 empty
+ <?(.*?)>? // href = $4
+ [ \t]*
+ ( // $5
+ (['"]) // quote char = $6
+ (.*?) // Title = $7
+ \6 // matching quote
+ [ \t]* // ignore any spaces/tabs between closing quote and )
+ )? // title is optional
+ \)
+ )
+ /g,writeAnchorTag);
+ */
+ text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?(.*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeAnchorTag);
+
+ //
+ // Last, handle reference-style shortcuts: [link text]
+ // These must come last in case you've also got [link test][1]
+ // or [link test](/foo)
+ //
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ \[
+ ([^\[\]]+) // link text = $2; can't contain '[' or ']'
+ \]
+ )()()()()() // pad rest of backreferences
+ /g, writeAnchorTag);
+ */
+ text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag);
+
+ return text;
+}
+
+var writeAnchorTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) {
+ if (m7 == undefined) m7 = "";
+ var whole_match = m1;
+ var link_text = m2;
+ var link_id = m3.toLowerCase();
+ var url = m4;
+ var title = m7;
+
+ if (url == "") {
+ if (link_id == "") {
+ // lower-case and turn embedded newlines into spaces
+ link_id = link_text.toLowerCase().replace(/ ?\n/g," ");
+ }
+ url = "#"+link_id;
+
+ if (g_urls[link_id] != undefined) {
+ url = g_urls[link_id];
+ if (g_titles[link_id] != undefined) {
+ title = g_titles[link_id];
+ }
+ }
+ else {
+ if (whole_match.search(/\(\s*\)$/m)>-1) {
+ // Special case for explicit empty url
+ url = "";
+ } else {
+ return whole_match;
+ }
+ }
+ }
+
+ url = escapeCharacters(url,"*_");
+ var result = "<a href=\"" + url + "\"";
+
+ if (title != "") {
+ title = title.replace(/"/g,"&quot;");
+ title = escapeCharacters(title,"*_");
+ result += " title=\"" + title + "\"";
+ }
+
+ result += ">" + link_text + "</a>";
+
+ return result;
+}
+
+
+var _DoImages = function(text) {
+//
+// Turn Markdown image shortcuts into <img> tags.
+//
+
+ //
+ // First, handle reference-style labeled images: ![alt text][id]
+ //
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ !\[
+ (.*?) // alt text = $2
+ \]
+
+ [ ]? // one optional space
+ (?:\n[ ]*)? // one optional newline followed by spaces
+
+ \[
+ (.*?) // id = $3
+ \]
+ )()()()() // pad rest of backreferences
+ /g,writeImageTag);
+ */
+ text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeImageTag);
+
+ //
+ // Next, handle inline images: ![alt text](url "optional title")
+ // Don't forget: encode * and _
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ !\[
+ (.*?) // alt text = $2
+ \]
+ \s? // One optional whitespace character
+ \( // literal paren
+ [ \t]*
+ () // no id, so leave $3 empty
+ <?(\S+?)>? // src url = $4
+ [ \t]*
+ ( // $5
+ (['"]) // quote char = $6
+ (.*?) // title = $7
+ \6 // matching quote
+ [ \t]*
+ )? // title is optional
+ \)
+ )
+ /g,writeImageTag);
+ */
+ text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeImageTag);
+
+ return text;
+}
+
+var writeImageTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) {
+ var whole_match = m1;
+ var alt_text = m2;
+ var link_id = m3.toLowerCase();
+ var url = m4;
+ var title = m7;
+
+ if (!title) title = "";
+
+ if (url == "") {
+ if (link_id == "") {
+ // lower-case and turn embedded newlines into spaces
+ link_id = alt_text.toLowerCase().replace(/ ?\n/g," ");
+ }
+ url = "#"+link_id;
+
+ if (g_urls[link_id] != undefined) {
+ url = g_urls[link_id];
+ if (g_titles[link_id] != undefined) {
+ title = g_titles[link_id];
+ }
+ }
+ else {
+ return whole_match;
+ }
+ }
+
+ alt_text = alt_text.replace(/"/g,"&quot;");
+ url = escapeCharacters(url,"*_");
+ var result = "<img src=\"" + url + "\" alt=\"" + alt_text + "\"";
+
+ // attacklab: Markdown.pl adds empty title attributes to images.
+ // Replicate this bug.
+
+ //if (title != "") {
+ title = title.replace(/"/g,"&quot;");
+ title = escapeCharacters(title,"*_");
+ result += " title=\"" + title + "\"";
+ //}
+
+ result += " />";
+
+ return result;
+}
+
+
+var _DoHeaders = function(text) {
+
+ // Setext-style headers:
+ // Header 1
+ // ========
+ //
+ // Header 2
+ // --------
+ //
+ text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,
+ function(wholeMatch,m1){return hashBlock("<h1>" + _RunSpanGamut(m1) + "</h1>");});
+
+ text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,
+ function(matchFound,m1){return hashBlock("<h2>" + _RunSpanGamut(m1) + "</h2>");});
+
+ // atx-style headers:
+ // # Header 1
+ // ## Header 2
+ // ## Header 2 with closing hashes ##
+ // ...
+ // ###### Header 6
+ //
+
+ /*
+ text = text.replace(/
+ ^(\#{1,6}) // $1 = string of #'s
+ [ \t]*
+ (.+?) // $2 = Header text
+ [ \t]*
+ \#* // optional closing #'s (not counted)
+ \n+
+ /gm, function() {...});
+ */
+
+ text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,
+ function(wholeMatch,m1,m2) {
+ var h_level = m1.length;
+ return hashBlock("<h" + h_level + ">" + _RunSpanGamut(m2) + "</h" + h_level + ">");
+ });
+
+ return text;
+}
+
+// This declaration keeps Dojo compressor from outputting garbage:
+var _ProcessListItems;
+
+var _DoLists = function(text) {
+//
+// Form HTML ordered (numbered) and unordered (bulleted) lists.
+//
+
+ // attacklab: add sentinel to hack around khtml/safari bug:
+ // http://bugs.webkit.org/show_bug.cgi?id=11231
+ text += "~0";
+
+ // Re-usable pattern to match any entirel ul or ol list:
+
+ /*
+ var whole_list = /
+ ( // $1 = whole list
+ ( // $2
+ [ ]{0,3} // attacklab: g_tab_width - 1
+ ([*+-]|\d+[.]) // $3 = first list item marker
+ [ \t]+
+ )
+ [^\r]+?
+ ( // $4
+ ~0 // sentinel for workaround; should be $
+ |
+ \n{2,}
+ (?=\S)
+ (?! // Negative lookahead for another list item marker
+ [ \t]*
+ (?:[*+-]|\d+[.])[ \t]+
+ )
+ )
+ )/g
+ */
+ var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;
+
+ if (g_list_level) {
+ text = text.replace(whole_list,function(wholeMatch,m1,m2) {
+ var list = m1;
+ var list_type = (m2.search(/[*+-]/g)>-1) ? "ul" : "ol";
+
+ // Turn double returns into triple returns, so that we can make a
+ // paragraph for the last item in a list, if necessary:
+ list = list.replace(/\n{2,}/g,"\n\n\n");;
+ var result = _ProcessListItems(list);
+
+ // Trim any trailing whitespace, to put the closing `</$list_type>`
+ // up on the preceding line, to get it past the current stupid
+ // HTML block parser. This is a hack to work around the terrible
+ // hack that is the HTML block parser.
+ result = result.replace(/\s+$/,"");
+ result = "<"+list_type+">" + result + "</"+list_type+">\n";
+ return result;
+ });
+ } else {
+ whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;
+ text = text.replace(whole_list,function(wholeMatch,m1,m2,m3) {
+ var runup = m1;
+ var list = m2;
+
+ var list_type = (m3.search(/[*+-]/g)>-1) ? "ul" : "ol";
+ // Turn double returns into triple returns, so that we can make a
+ // paragraph for the last item in a list, if necessary:
+ var list = list.replace(/\n{2,}/g,"\n\n\n");;
+ var result = _ProcessListItems(list);
+ result = runup + "<"+list_type+">\n" + result + "</"+list_type+">\n";
+ return result;
+ });
+ }
+
+ // attacklab: strip sentinel
+ text = text.replace(/~0/,"");
+
+ return text;
+}
+
+_ProcessListItems = function(list_str) {
+//
+// Process the contents of a single ordered or unordered list, splitting it
+// into individual list items.
+//
+ // The $g_list_level global keeps track of when we're inside a list.
+ // Each time we enter a list, we increment it; when we leave a list,
+ // we decrement. If it's zero, we're not in a list anymore.
+ //
+ // We do this because when we're not inside a list, we want to treat
+ // something like this:
+ //
+ // I recommend upgrading to version
+ // 8. Oops, now this line is treated
+ // as a sub-list.
+ //
+ // As a single paragraph, despite the fact that the second line starts
+ // with a digit-period-space sequence.
+ //
+ // Whereas when we're inside a list (or sub-list), that line will be
+ // treated as the start of a sub-list. What a kludge, huh? This is
+ // an aspect of Markdown's syntax that's hard to parse perfectly
+ // without resorting to mind-reading. Perhaps the solution is to
+ // change the syntax rules such that sub-lists must start with a
+ // starting cardinal number; e.g. "1." or "a.".
+
+ g_list_level++;
+
+ // trim trailing blank lines:
+ list_str = list_str.replace(/\n{2,}$/,"\n");
+
+ // attacklab: add sentinel to emulate \z
+ list_str += "~0";
+
+ /*
+ list_str = list_str.replace(/
+ (\n)? // leading line = $1
+ (^[ \t]*) // leading whitespace = $2
+ ([*+-]|\d+[.]) [ \t]+ // list marker = $3
+ ([^\r]+? // list item text = $4
+ (\n{1,2}))
+ (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+))
+ /gm, function(){...});
+ */
+ list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,
+ function(wholeMatch,m1,m2,m3,m4){
+ var item = m4;
+ var leading_line = m1;
+ var leading_space = m2;
+
+ if (leading_line || (item.search(/\n{2,}/)>-1)) {
+ item = _RunBlockGamut(_Outdent(item));
+ }
+ else {
+ // Recursion for sub-lists:
+ item = _DoLists(_Outdent(item));
+ item = item.replace(/\n$/,""); // chomp(item)
+ item = _RunSpanGamut(item);
+ }
+
+ return "<li>" + item + "</li>\n";
+ }
+ );
+
+ // attacklab: strip sentinel
+ list_str = list_str.replace(/~0/g,"");
+
+ g_list_level--;
+ return list_str;
+}
+
+
+var _DoCodeBlocks = function(text) {
+//
+// Process Markdown `<pre><code>` blocks.
+//
+
+ /*
+ text = text.replace(text,
+ /(?:\n\n|^)
+ ( // $1 = the code block -- one or more lines, starting with a space/tab
+ (?:
+ (?:[ ]{4}|\t) // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
+ .*\n+
+ )+
+ )
+ (\n*[ ]{0,3}[^ \t\n]|(?=~0)) // attacklab: g_tab_width
+ /g,function(){...});
+ */
+
+ // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
+ text += "~0";
+
+ text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
+ function(wholeMatch,m1,m2) {
+ var codeblock = m1;
+ var nextChar = m2;
+
+ codeblock = _EncodeCode( _Outdent(codeblock));
+ codeblock = _Detab(codeblock);
+ codeblock = codeblock.replace(/^\n+/g,""); // trim leading newlines
+ codeblock = codeblock.replace(/\n+$/g,""); // trim trailing whitespace
+
+ codeblock = "<pre><code>" + codeblock + "\n</code></pre>";
+
+ return hashBlock(codeblock) + nextChar;
+ }
+ );
+
+ // attacklab: strip sentinel
+ text = text.replace(/~0/,"");
+
+ return text;
+}
+
+var hashBlock = function(text) {
+ text = text.replace(/(^\n+|\n+$)/g,"");
+ return "\n\n~K" + (g_html_blocks.push(text)-1) + "K\n\n";
+}
+
+
+var _DoCodeSpans = function(text) {
+//
+// * Backtick quotes are used for <code></code> spans.
+//
+// * You can use multiple backticks as the delimiters if you want to
+// include literal backticks in the code span. So, this input:
+//
+// Just type ``foo `bar` baz`` at the prompt.
+//
+// Will translate to:
+//
+// <p>Just type <code>foo `bar` baz</code> at the prompt.</p>
+//
+// There's no arbitrary limit to the number of backticks you
+// can use as delimters. If you need three consecutive backticks
+// in your code, use four for delimiters, etc.
+//
+// * You can use spaces to get literal backticks at the edges:
+//
+// ... type `` `bar` `` ...
+//
+// Turns to:
+//
+// ... type <code>`bar`</code> ...
+//
+
+ /*
+ text = text.replace(/
+ (^|[^\\]) // Character before opening ` can't be a backslash
+ (`+) // $2 = Opening run of `
+ ( // $3 = The code block
+ [^\r]*?
+ [^`] // attacklab: work around lack of lookbehind
+ )
+ \2 // Matching closer
+ (?!`)
+ /gm, function(){...});
+ */
+
+ text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
+ function(wholeMatch,m1,m2,m3,m4) {
+ var c = m3;
+ c = c.replace(/^([ \t]*)/g,""); // leading whitespace
+ c = c.replace(/[ \t]*$/g,""); // trailing whitespace
+ c = _EncodeCode(c);
+ return m1+"<code>"+c+"</code>";
+ });
+
+ return text;
+}
+
+
+var _EncodeCode = function(text) {
+//
+// Encode/escape certain characters inside Markdown code runs.
+// The point is that in code, these characters are literals,
+// and lose their special Markdown meanings.
+//
+ // Encode all ampersands; HTML entities are not
+ // entities within a Markdown code span.
+ text = text.replace(/&/g,"&amp;");
+
+ // Do the angle bracket song and dance:
+ text = text.replace(/</g,"&lt;");
+ text = text.replace(/>/g,"&gt;");
+
+ // Now, escape characters that are magic in Markdown:
+ text = escapeCharacters(text,"\*_{}[]\\",false);
+
+// jj the line above breaks this:
+//---
+
+//* Item
+
+// 1. Subitem
+
+// special char: *
+//---
+
+ return text;
+}
+
+
+var _DoItalicsAndBold = function(text) {
+
+ // <strong> must go first:
+ if (codeFriendlyMarkdown === true){
+ text = text.replace(/(\*\*)(?=\S)([^\r]*?\S[\*]*)\1/g,
+ "<strong>$2</strong>");
+
+ text = text.replace(/(\*)(?=\S)([^\r]*?\S)\1/g,
+ "<em>$2</em>");
+ }
+ else {
+ text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\1/g,
+ "<strong>$2</strong>");
+
+ text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,
+ "<em>$2</em>");
+ }
+
+ return text;
+}
+
+
+var _DoBlockQuotes = function(text) {
+
+ /*
+ text = text.replace(/
+ ( // Wrap whole match in $1
+ (
+ ^[ \t]*>[ \t]? // '>' at the start of a line
+ .+\n // rest of the first line
+ (.+\n)* // subsequent consecutive lines
+ \n* // blanks
+ )+
+ )
+ /gm, function(){...});
+ */
+
+ text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,
+ function(wholeMatch,m1) {
+ var bq = m1;
+
+ // attacklab: hack around Konqueror 3.5.4 bug:
+ // "----------bug".replace(/^-/g,"") == "bug"
+
+ bq = bq.replace(/^[ \t]*>[ \t]?/gm,"~0"); // trim one level of quoting
+
+ // attacklab: clean up hack
+ bq = bq.replace(/~0/g,"");
+
+ bq = bq.replace(/^[ \t]+$/gm,""); // trim whitespace-only lines
+ bq = _RunBlockGamut(bq); // recurse
+
+ bq = bq.replace(/(^|\n)/g,"$1 ");
+ // These leading spaces screw with <pre> content, so we need to fix that:
+ bq = bq.replace(
+ /(\s*<pre>[^\r]+?<\/pre>)/gm,
+ function(wholeMatch,m1) {
+ var pre = m1;
+ // attacklab: hack around Konqueror 3.5.4 bug:
+ pre = pre.replace(/^ /mg,"~0");
+ pre = pre.replace(/~0/g,"");
+ return pre;
+ });
+
+ return hashBlock("<blockquote>\n" + bq + "\n</blockquote>");
+ });
+ return text;
+}
+
+
+var _FormParagraphs = function(text) {
+//
+// Params:
+// $text - string to process with html <p> tags
+//
+
+ // Strip leading and trailing lines:
+ text = text.replace(/^\n+/g,"");
+ text = text.replace(/\n+$/g,"");
+
+ var grafs = text.split(/\n{2,}/g);
+ var grafsOut = new Array();
+
+ //
+ // Wrap <p> tags.
+ //
+ var end = grafs.length;
+ for (var i=0; i<end; i++) {
+ var str = grafs[i];
+
+ // if this is an HTML marker, copy it
+ if (str.search(/~K(\d+)K/g) >= 0) {
+ grafsOut.push(str);
+ }
+ else if (str.search(/\S/) >= 0) {
+ str = _RunSpanGamut(str);
+ str = str.replace(/^([ \t]*)/g,"<p>");
+ str += "</p>"
+ grafsOut.push(str);
+ }
+
+ }
+
+ //
+ // Unhashify HTML blocks
+ //
+ end = grafsOut.length;
+ for (var i=0; i<end; i++) {
+ // if this is a marker for an html block...
+ while (grafsOut[i].search(/~K(\d+)K/) >= 0) {
+ var blockText = g_html_blocks[RegExp.$1];
+ blockText = blockText.replace(/\$/g,"$$$$"); // Escape any dollar signs
+ grafsOut[i] = grafsOut[i].replace(/~K\d+K/,blockText);
+ }
+ }
+
+ return grafsOut.join("\n\n");
+}
+
+
+var _EncodeAmpsAndAngles = function(text) {
+// Smart processing for ampersands and angle brackets that need to be encoded.
+
+ // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
+ // http://bumppo.net/projects/amputator/
+ text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");
+
+ // Encode naked <'s
+ text = text.replace(/<(?![a-z\/?\$!])/gi,"&lt;");
+
+ return text;
+}
+
+
+var _EncodeBackslashEscapes = function(text) {
+//
+// Parameter: String.
+// Returns: The string, with after processing the following backslash
+// escape sequences.
+//
+
+ // attacklab: The polite way to do this is with the new
+ // escapeCharacters() function:
+ //
+ // text = escapeCharacters(text,"\\",true);
+ // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true);
+ //
+ // ...but we're sidestepping its use of the (slow) RegExp constructor
+ // as an optimization for Firefox. This function gets called a LOT.
+
+ text = text.replace(/\\(\\)/g,escapeCharacters_callback);
+ text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g,escapeCharacters_callback);
+ return text;
+}
+
+
+var _DoAutoLinks = function(text) {
+
+ text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,"<a href=\"$1\">$1</a>");
+
+ // Email addresses: <address@domain.foo>
+
+ /*
+ text = text.replace(/
+ <
+ (?:mailto:)?
+ (
+ [-.\w]+
+ \@
+ [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+
+ )
+ >
+ /gi, _DoAutoLinks_callback());
+ */
+ text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,
+ function(wholeMatch,m1) {
+ return _EncodeEmailAddress( _UnescapeSpecialChars(m1) );
+ }
+ );
+
+ return text;
+}
+
+
+var _EncodeEmailAddress = function(addr) {
+//
+// Input: an email address, e.g. "foo@example.com"
+//
+// Output: the email address as a mailto link, with each character
+// of the address encoded as either a decimal or hex entity, in
+// the hopes of foiling most address harvesting spam bots. E.g.:
+//
+// <a href="&#x6D;&#97;&#105;&#108;&#x74;&#111;:&#102;&#111;&#111;&#64;&#101;
+// x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;">&#102;&#111;&#111;
+// &#64;&#101;x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;</a>
+//
+// Based on a filter by Matthew Wickline, posted to the BBEdit-Talk
+// mailing list: <http://tinyurl.com/yu7ue>
+//
+
+ // attacklab: why can't javascript speak hex?
+ function char2hex(ch) {
+ var hexDigits = '0123456789ABCDEF';
+ var dec = ch.charCodeAt(0);
+ return(hexDigits.charAt(dec>>4) + hexDigits.charAt(dec&15));
+ }
+
+ var encode = [
+ function(ch){return "&#"+ch.charCodeAt(0)+";";},
+ function(ch){return "&#x"+char2hex(ch)+";";},
+ function(ch){return ch;}
+ ];
+
+ addr = "mailto:" + addr;
+
+ addr = addr.replace(/./g, function(ch) {
+ if (ch == "@") {
+ // this *must* be encoded. I insist.
+ ch = encode[Math.floor(Math.random()*2)](ch);
+ } else if (ch !=":") {
+ // leave ':' alone (to spot mailto: later)
+ var r = Math.random();
+ // roughly 10% raw, 45% hex, 45% dec
+ ch = (
+ r > .9 ? encode[2](ch) :
+ r > .45 ? encode[1](ch) :
+ encode[0](ch)
+ );
+ }
+ return ch;
+ });
+
+ addr = "<a href=\"" + addr + "\">" + addr + "</a>";
+ addr = addr.replace(/">.+:/g,"\">"); // strip the mailto: from the visible part
+
+ return addr;
+}
+
+
+var _UnescapeSpecialChars = function(text) {
+//
+// Swap back in all the special characters we've hidden.
+//
+ text = text.replace(/~E(\d+)E/g,
+ function(wholeMatch,m1) {
+ var charCodeToReplace = parseInt(m1);
+ return String.fromCharCode(charCodeToReplace);
+ }
+ );
+ return text;
+}
+
+
+var _Outdent = function(text) {
+//
+// Remove one level of line-leading tabs or spaces
+//
+
+ // attacklab: hack around Konqueror 3.5.4 bug:
+ // "----------bug".replace(/^-/g,"") == "bug"
+
+ text = text.replace(/^(\t|[ ]{1,4})/gm,"~0"); // attacklab: g_tab_width
+
+ // attacklab: clean up hack
+ text = text.replace(/~0/g,"")
+
+ return text;
+}
+
+var _Detab = function(text) {
+// attacklab: Detab's completely rewritten for speed.
+// In perl we could fix it by anchoring the regexp with \G.
+// In javascript we're less fortunate.
+
+ // expand first n-1 tabs
+ text = text.replace(/\t(?=\t)/g," "); // attacklab: g_tab_width
+
+ // replace the nth with two sentinels
+ text = text.replace(/\t/g,"~A~B");
+
+ // use the sentinel to anchor our regex so it doesn't explode
+ text = text.replace(/~B(.+?)~A/g,
+ function(wholeMatch,m1,m2) {
+ var leadingText = m1;
+ var numSpaces = 4 - leadingText.length % 4; // attacklab: g_tab_width
+
+ // there *must* be a better way to do this:
+ for (var i=0; i<numSpaces; i++) leadingText+=" ";
+
+ return leadingText;
+ }
+ );
+
+ // clean up sentinels
+ text = text.replace(/~A/g," "); // attacklab: g_tab_width
+ text = text.replace(/~B/g,"");
+
+ return text;
+}
+
+
+//
+// attacklab: Utility functions
+//
+
+
+var escapeCharacters = function(text, charsToEscape, afterBackslash) {
+ // First we have to escape the escape characters so that
+ // we can build a character class out of them
+ var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g,"\\$1") + "])";
+
+ if (afterBackslash) {
+ regexString = "\\\\" + regexString;
+ }
+
+ var regex = new RegExp(regexString,"g");
+ text = text.replace(regex,escapeCharacters_callback);
+
+ return text;
+}
+
+
+var escapeCharacters_callback = function(wholeMatch,m1) {
+ var charCodeToEscape = m1.charCodeAt(0);
+ return "~E"+charCodeToEscape+"E";
+}
+
+} // end of Attacklab.showdown.converter
+
+
+// Version 0.9 used the Showdown namespace instead of Attacklab.showdown
+// The old namespace is deprecated, but we'll support it for now:
+var Showdown = Attacklab.showdown;
+
+// If anyone's interested, tell the world that this file's been loaded
+if (Attacklab.fileLoaded) {
+ Attacklab.fileLoaded("showdown.js");
+}
diff --git a/askbot/skins/old/media/js/wmd/wmd-min.js b/askbot/skins/old/media/js/wmd/wmd-min.js
new file mode 100644
index 00000000..aa643f1a
--- /dev/null
+++ b/askbot/skins/old/media/js/wmd/wmd-min.js
@@ -0,0 +1 @@
+var Attacklab=Attacklab||{};Attacklab.wmdBase=function(){var y=top.Attacklab;var E=top.document;var s=top.RegExp;var l=top.navigator;y.Util={};y.Position={};y.Command={};y.Global={};var a=y.Util;var C=y.Position;var h=y.Command;var v=y.Global;v.isIE=/msie/.test(l.userAgent.toLowerCase());v.isIE_5or6=/msie 6/.test(l.userAgent.toLowerCase())||/msie 5/.test(l.userAgent.toLowerCase());v.isIE_7plus=v.isIE&&!v.isIE_5or6;v.isOpera=/opera/.test(l.userAgent.toLowerCase());v.isKonqueror=/konqueror/.test(l.userAgent.toLowerCase());var c="粗体 <strong> Ctrl-B";var f="斜体 <em> Ctrl-I";var z="超链接 <a> Ctrl-L";var u="引用 <blockquote> Ctrl-.";var e="ä»£ç  <pre><code> Ctrl-K";var d="图片 <img> Ctrl-G";var q="æ•°å­—ç¼–å·åˆ—表 <ol> Ctrl-O";var t="项目符å·åˆ—表 <ul> Ctrl-U";var i="标题 <h1>/<h2> Ctrl-H";var p="水平线 <hr> Ctrl-R";var m="撤销 Ctrl-Z";var j="é‡åš Ctrl-Y";var B="<p style='margin-top: 0px'><b>输入图片地å€</b></p><p>示例:<br />http://www.cnprog.com/images/temp.jpg \"我的截图\"</p>";var D="<p style='margin-top: 0px'><b>输入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的网站\"</p>";var n='<div>或者上传本地图片:</div><input type="file" name="file-upload" id="file-upload" size="26" onchange="return ajaxFileUpload($(\'#image-url\'));"/><br><img id="loading" src="/media/images/indicator.gif" style="display:none;"/>';var b="http://";var g="http://";var o="images/";var A=500;var x=100;var k="http://wmd-editor.com/";var r="WMD website";var w="_blank";y.PanelCollection=function(){this.buttonBar=E.getElementById("wmd-button-bar");this.preview=E.getElementById("previewer");this.output=E.getElementById("wmd-output");this.input=E.getElementById("editor")};y.panels=undefined;y.ieCachedRange=null;y.ieRetardedClick=false;a.isVisible=function(F){if(window.getComputedStyle){return window.getComputedStyle(F,null).getPropertyValue("display")!=="none"}else{if(F.currentStyle){return F.currentStyle.display!=="none"}}};a.addEvent=function(G,F,H){if(G.attachEvent){G.attachEvent("on"+F,H)}else{G.addEventListener(F,H,false)}};a.removeEvent=function(G,F,H){if(G.detachEvent){G.detachEvent("on"+F,H)}else{G.removeEventListener(F,H,false)}};a.fixEolChars=function(F){F=F.replace(/\r\n/g,"\n");F=F.replace(/\r/g,"\n");return F};a.extendRegExp=function(H,J,G){if(J===null||J===undefined){J=""}if(G===null||G===undefined){G=""}var I=H.toString();var F;I=I.replace(/\/([gim]*)$/,"");F=s.$1;I=I.replace(/(^\/|\/$)/g,"");I=J+I+G;return new s(I,F)};a.createImage=function(F){var H=o+F;var G=E.createElement("img");G.className="wmd-button";G.src=H;return G};a.prompt=function(M,P,H){var I;var F;var K;var J=0;if(arguments.length==4){J=arguments[3]}if(P===undefined){P=""}var L=function(Q){var R=(Q.charCode||Q.keyCode);if(R===27){N(true)}};var N=function(Q){a.removeEvent(E.body,"keydown",L);var R=K.value;if(Q){R=null}else{R=R.replace("http://http://","http://");R=R.replace("http://https://","https://");R=R.replace("http://ftp://","ftp://");if(R.indexOf("http://")===-1&&R.indexOf("ftp://")===-1){R="http://"+R}}I.parentNode.removeChild(I);F.parentNode.removeChild(F);H(R);return false};var G=function(){F=E.createElement("div");F.className="wmd-prompt-background";style=F.style;style.position="absolute";style.top="0";style.zIndex="1000";if(v.isKonqueror){style.backgroundColor="transparent"}else{if(v.isIE){style.filter="alpha(opacity=50)"}else{style.opacity="0.5"}}var Q=C.getPageSize();style.height=Q[1]+"px";if(v.isIE){style.left=E.documentElement.scrollLeft;style.width=E.documentElement.clientWidth}else{style.left="0";style.width="100%"}E.body.appendChild(F)};var O=function(){I=E.createElement("div");I.className="wmd-prompt-dialog";I.style.padding="10px;";I.style.position="fixed";I.style.width="400px";I.style.zIndex="1001";var Q=E.createElement("div");Q.innerHTML=M;Q.style.padding="5px";I.appendChild(Q);var S=E.createElement("form");S.onsubmit=function(){return N(false)};style=S.style;style.padding="0";style.margin="0";style.cssFloat="left";style.width="100%";style.textAlign="center";style.position="relative";I.appendChild(S);K=E.createElement("input");if(J==1){K.id="image-url"}K.type="text";K.value=P;style=K.style;style.display="block";style.width="80%";style.marginLeft=style.marginRight="auto";S.appendChild(K);if(J==1){var R=E.createElement("div");R.innerHTML=n;R.style.padding="5px";S.appendChild(R)}var U=E.createElement("input");U.type="button";U.onclick=function(){return N(false)};U.value="OK";style=U.style;style.margin="10px";style.display="inline";style.width="7em";var T=E.createElement("input");T.type="button";T.onclick=function(){return N(true)};T.value="Cancel";style=T.style;style.margin="10px";style.display="inline";style.width="7em";if(/mac/.test(l.platform.toLowerCase())){S.appendChild(T);S.appendChild(U)}else{S.appendChild(U);S.appendChild(T)}a.addEvent(E.body,"keydown",L);I.style.top="50%";I.style.left="50%";I.style.display="block";if(v.isIE_5or6){I.style.position="absolute";I.style.top=E.documentElement.scrollTop+200+"px";I.style.left="50%"}E.body.appendChild(I);I.style.marginTop=-(C.getHeight(I)/2)+"px";I.style.marginLeft=-(C.getWidth(I)/2)+"px"};G();top.setTimeout(function(){O();var R=P.length;if(K.selectionStart!==undefined){K.selectionStart=0;K.selectionEnd=R}else{if(K.createTextRange){var Q=K.createTextRange();Q.collapse(false);Q.moveStart("character",-R);Q.moveEnd("character",R);Q.select()}}K.focus()},0)};C.getTop=function(H,G){var F=H.offsetTop;if(!G){while(H=H.offsetParent){F+=H.offsetTop}}return F};C.getHeight=function(F){return F.offsetHeight||F.scrollHeight};C.getWidth=function(F){return F.offsetWidth||F.scrollWidth};C.getPageSize=function(){var G,H;var F,K;if(self.innerHeight&&self.scrollMaxY){G=E.body.scrollWidth;H=self.innerHeight+self.scrollMaxY}else{if(E.body.scrollHeight>E.body.offsetHeight){G=E.body.scrollWidth;H=E.body.scrollHeight}else{G=E.body.offsetWidth;H=E.body.offsetHeight}}if(self.innerHeight){F=self.innerWidth;K=self.innerHeight}else{if(E.documentElement&&E.documentElement.clientHeight){F=E.documentElement.clientWidth;K=E.documentElement.clientHeight}else{if(E.body){F=E.body.clientWidth;K=E.body.clientHeight}}}var J=Math.max(G,F);var I=Math.max(H,K);return[J,I,F,K]};y.inputPoller=function(O,H){var F=this;var K=y.panels.input;var G;var I;var L;var J;this.tick=function(){if(!a.isVisible(K)){return}if(K.selectionStart||K.selectionStart===0){var Q=K.selectionStart;var P=K.selectionEnd;if(Q!=G||P!=I){G=Q;I=P;if(L!=K.value){L=K.value;return true}}}return false};var N=function(){if(!a.isVisible(K)){return}if(F.tick()){O()}};var M=function(){J=top.setInterval(N,H)};this.destroy=function(){top.clearInterval(J)};M()};y.undoManager=function(Q){var U=this;var O=[];var M=0;var L="none";var G;var R;var H;var K;var F=function(W,V){if(L!=W){L=W;if(!V){I()}}if(!v.isIE||L!="moving"){H=top.setTimeout(N,1)}else{K=null}};var N=function(){K=new y.TextareaState();R.tick();H=undefined};this.setCommandMode=function(){L="command";I();H=top.setTimeout(N,0)};this.canUndo=function(){return M>1};this.canRedo=function(){if(O[M+1]){return true}return false};this.undo=function(){if(U.canUndo()){if(G){G.restore();G=null}else{O[M]=new y.TextareaState();O[--M].restore();if(Q){Q()}}}L="none";y.panels.input.focus();N()};this.redo=function(){if(U.canRedo()){O[++M].restore();if(Q){Q()}}L="none";y.panels.input.focus();N()};var I=function(){var V=K||new y.TextareaState();if(!V){return false}if(L=="moving"){if(!G){G=V}return}if(G){if(O[M-1].text!=G.text){O[M++]=G}G=null}O[M++]=V;O[M+1]=null;if(Q){Q()}};var P=function(V){var X=false;if(V.ctrlKey||V.metaKey){var W=V.charCode||V.keyCode;var Y=String.fromCharCode(W);switch(Y){case"y":U.redo();X=true;break;case"z":if(!V.shiftKey){U.undo()}else{U.redo()}X=true;break}}if(X){if(V.preventDefault){V.preventDefault()}if(top.event){top.event.returnValue=false}return}};var T=function(V){if(!V.ctrlKey&&!V.metaKey){var W=V.keyCode;if((W>=33&&W<=40)||(W>=63232&&W<=63235)){F("moving")}else{if(W==8||W==46||W==127){F("deleting")}else{if(W==13){F("newlines")}else{if(W==27){F("escape")}else{if((W<16||W>20)&&W!=91){F("typing")}}}}}}};var J=function(){a.addEvent(y.panels.input,"keypress",function(W){if((W.ctrlKey||W.metaKey)&&(W.keyCode==89||W.keyCode==90)){W.preventDefault()}});var V=function(){if(v.isIE||(K&&K.text!=y.panels.input.value)){if(H==undefined){L="paste";I();N()}}};R=new y.inputPoller(V,x);a.addEvent(y.panels.input,"keydown",P);a.addEvent(y.panels.input,"keydown",T);a.addEvent(y.panels.input,"mousedown",function(){F("moving")});y.panels.input.onpaste=V;y.panels.input.ondrop=V};var S=function(){J();N();I()};this.destroy=function(){if(R){R.destroy()}};S()};y.editor=function(O){if(!O){O=function(){}}var L=y.panels.input;var I=0;var P=this;var K;var R;var G;var M;var N;var U=function(W){L.focus();if(W.textOp){if(N){N.setCommandMode()}var Y=new y.TextareaState();if(!Y){return}var Z=Y.getChunks();var V=function(){L.focus();if(Z){Y.setChunks(Z)}Y.restore();O()};var X=W.textOp(Z,V);if(!X){V()}}if(W.execute){W.execute(P)}};var S=function(){if(N){F(document.getElementById("wmd-undo-button"),N.canUndo());F(document.getElementById("wmd-redo-button"),N.canRedo())}};var F=function(V,X){var Y="0px";var Z="-20px";var W="-40px";if(X){V.style.backgroundPosition=V.XShift+" "+Y;V.onmouseover=function(){this.style.backgroundPosition=this.XShift+" "+W};V.onmouseout=function(){this.style.backgroundPosition=this.XShift+" "+Y};if(v.isIE){V.onmousedown=function(){y.ieRetardedClick=true;y.ieCachedRange=document.selection.createRange()}}if(!V.isHelp){V.onclick=function(){if(this.onmouseout){this.onmouseout()}U(this);return false}}}else{V.style.backgroundPosition=V.XShift+" "+Z;V.onmouseover=V.onmouseout=V.onclick=function(){}}};var J=function(){var Z=document.getElementById("wmd-button-bar");var W="0px";var Y="-20px";var ae="-40px";var ak=document.createElement("ul");ak.id="wmd-button-row";ak=Z.appendChild(ak);var ad=document.createElement("li");ad.className="wmd-button";ad.id="wmd-bold-button";ad.title=c;ad.XShift="0px";ad.textOp=h.doBold;F(ad,true);ak.appendChild(ad);var ac=document.createElement("li");ac.className="wmd-button";ac.id="wmd-italic-button";ac.title=f;ac.XShift="-20px";ac.textOp=h.doItalic;F(ac,true);ak.appendChild(ac);var ah=document.createElement("li");ah.className="wmd-spacer";ah.id="wmd-spacer1";ak.appendChild(ah);var ai=document.createElement("li");ai.className="wmd-button";ai.id="wmd-link-button";ai.title=z;ai.XShift="-40px";ai.textOp=function(ap,aq){return h.doLinkOrImage(ap,aq,false)};F(ai,true);ak.appendChild(ai);var al=document.createElement("li");al.className="wmd-button";al.id="wmd-quote-button";al.title=u;al.XShift="-60px";al.textOp=h.doBlockquote;F(al,true);ak.appendChild(al);var am=document.createElement("li");am.className="wmd-button";am.id="wmd-code-button";am.title=e;am.XShift="-80px";am.textOp=h.doCode;F(am,true);ak.appendChild(am);var aa=document.createElement("li");aa.className="wmd-button";aa.id="wmd-image-button";aa.title=d;aa.XShift="-100px";aa.textOp=function(ap,aq){return h.doLinkOrImage(ap,aq,true)};F(aa,true);ak.appendChild(aa);var ag=document.createElement("li");ag.className="wmd-spacer";ag.id="wmd-spacer2";ak.appendChild(ag);var ab=document.createElement("li");ab.className="wmd-button";ab.id="wmd-olist-button";ab.title=q;ab.XShift="-120px";ab.textOp=function(ap,aq){h.doList(ap,aq,true)};F(ab,true);ak.appendChild(ab);var ao=document.createElement("li");ao.className="wmd-button";ao.id="wmd-ulist-button";ao.title=t;ao.XShift="-140px";ao.textOp=function(ap,aq){h.doList(ap,aq,false)};F(ao,true);ak.appendChild(ao);var aj=document.createElement("li");aj.className="wmd-button";aj.id="wmd-heading-button";aj.title=i;aj.XShift="-160px";aj.textOp=h.doHeading;F(aj,true);ak.appendChild(aj);var X=document.createElement("li");X.className="wmd-button";X.id="wmd-hr-button";X.title=p;X.XShift="-180px";X.textOp=h.doHorizontalRule;F(X,true);ak.appendChild(X);var af=document.createElement("li");af.className="wmd-spacer";af.id="wmd-spacer3";ak.appendChild(af);var V=document.createElement("li");V.className="wmd-button";V.id="wmd-undo-button";V.title=m;V.XShift="-200px";V.execute=function(ap){ap.undo()};F(V,true);ak.appendChild(V);var an=document.createElement("li");an.className="wmd-button";an.id="wmd-redo-button";an.title=j;if(/win/.test(l.platform.toLowerCase())){an.title=j}else{an.title="é‡åš - Ctrl+Shift+Z"}an.XShift="-220px";an.execute=function(ap){ap.redo()};F(an,true);ak.appendChild(an);S()};var H=function(){if(/\?noundo/.test(E.location.href)){y.nativeUndo=true}if(!y.nativeUndo){N=new y.undoManager(function(){O();S()})}J();var W="keydown";if(v.isOpera){W="keypress"}a.addEvent(L,W,function(Y){if(Y.ctrlKey||Y.metaKey){var Z=Y.charCode||Y.keyCode;var X=String.fromCharCode(Z).toLowerCase();if(Z===46){X=""}if(Z===190){X="."}switch(X){case"b":U(document.getElementById("wmd-bold-button"));break;case"i":U(document.getElementById("wmd-italic-button"));break;case"l":U(document.getElementById("wmd-link-button"));break;case".":U(document.getElementById("wmd-quote-button"));break;case"k":U(document.getElementById("wmd-code-button"));break;case"g":U(document.getElementById("wmd-image-button"));break;case"o":U(document.getElementById("wmd-olist-button"));break;case"u":U(document.getElementById("wmd-ulist-button"));break;case"h":U(document.getElementById("wmd-heading-button"));break;case"r":U(document.getElementById("wmd-hr-button"));break;case"y":U(document.getElementById("wmd-redo-button"));break;case"z":if(Y.shiftKey){U(document.getElementById("wmd-redo-button"))}else{U(document.getElementById("wmd-undo-button"))}break;default:return}if(Y.preventDefault){Y.preventDefault()}if(top.event){top.event.returnValue=false}}});a.addEvent(L,"keyup",function(X){if(X.shiftKey&&!X.ctrlKey&&!X.metaKey){var Y=X.charCode||X.keyCode;if(Y===13){fakeButton={};fakeButton.textOp=h.doAutoindent;U(fakeButton)}}});if(L.form){var V=L.form.onsubmit;L.form.onsubmit=function(){Q();if(V){return V.apply(this,arguments)}}}};var Q=function(){if(y.showdown){var V=new y.showdown.converter()}var W=L.value;var X=function(){L.value=W};if(!/markdown/.test(y.wmd_env.output.toLowerCase())){if(V){L.value=V.makeHtml(W);top.setTimeout(X,0)}}return true};this.undo=function(){if(N){N.undo()}};this.redo=function(){if(N){N.redo()}};var T=function(){H()};this.destroy=function(){if(N){N.destroy()}if(G.parentNode){G.parentNode.removeChild(G)}if(L){L.style.marginTop=""}top.clearInterval(M)};T()};y.TextareaState=function(){var F=this;var G=y.panels.input;this.init=function(){if(!a.isVisible(G)){return}this.setInputAreaSelectionStartEnd();this.scrollTop=G.scrollTop;if(!this.text&&G.selectionStart||G.selectionStart===0){this.text=G.value}};this.setInputAreaSelection=function(){if(!a.isVisible(G)){return}if(G.selectionStart!==undefined&&!v.isOpera){G.focus();G.selectionStart=F.start;G.selectionEnd=F.end;G.scrollTop=F.scrollTop}else{if(E.selection){if(E.activeElement&&E.activeElement!==G){return}G.focus();var H=G.createTextRange();H.moveStart("character",-G.value.length);H.moveEnd("character",-G.value.length);H.moveEnd("character",F.end);H.moveStart("character",F.start);H.select()}}};this.setInputAreaSelectionStartEnd=function(){if(G.selectionStart||G.selectionStart===0){F.start=G.selectionStart;F.end=G.selectionEnd}else{if(E.selection){F.text=a.fixEolChars(G.value);var K;if(y.ieRetardedClick&&y.ieCachedRange){K=y.ieCachedRange;y.ieRetardedClick=false}else{K=E.selection.createRange()}var L=a.fixEolChars(K.text);var J="\x07";var I=J+L+J;K.text=I;var M=a.fixEolChars(G.value);K.moveStart("character",-I.length);K.text=L;F.start=M.indexOf(J);F.end=M.lastIndexOf(J)-J.length;var H=F.text.length-a.fixEolChars(G.value).length;if(H){K.moveStart("character",-L.length);while(H--){L+="\n";F.end+=1}K.text=L}this.setInputAreaSelection()}}};this.restore=function(){if(F.text!=undefined&&F.text!=G.value){G.value=F.text}this.setInputAreaSelection();G.scrollTop=F.scrollTop};this.getChunks=function(){var H=new y.Chunks();H.before=a.fixEolChars(F.text.substring(0,F.start));H.startTag="";H.selection=a.fixEolChars(F.text.substring(F.start,F.end));H.endTag="";H.after=a.fixEolChars(F.text.substring(F.end));H.scrollTop=F.scrollTop;return H};this.setChunks=function(H){H.before=H.before+H.startTag;H.after=H.endTag+H.after;if(v.isOpera){H.before=H.before.replace(/\n/g,"\r\n");H.selection=H.selection.replace(/\n/g,"\r\n");H.after=H.after.replace(/\n/g,"\r\n")}this.start=H.before.length;this.end=H.before.length+H.selection.length;this.text=H.before+H.selection+H.after;this.scrollTop=H.scrollTop};this.init()};y.Chunks=function(){};y.Chunks.prototype.findTags=function(G,I){var F=this;var H;if(G){H=a.extendRegExp(G,"","$");this.before=this.before.replace(H,function(J){F.startTag=F.startTag+J;return""});H=a.extendRegExp(G,"^","");this.selection=this.selection.replace(H,function(J){F.startTag=F.startTag+J;return""})}if(I){H=a.extendRegExp(I,"","$");this.selection=this.selection.replace(H,function(J){F.endTag=J+F.endTag;return""});H=a.extendRegExp(I,"^","");this.after=this.after.replace(H,function(J){F.endTag=J+F.endTag;return""})}};y.Chunks.prototype.trimWhitespace=function(F){this.selection=this.selection.replace(/^(\s*)/,"");if(!F){this.before+=s.$1}this.selection=this.selection.replace(/(\s*)$/,"");if(!F){this.after=s.$1+this.after}};y.Chunks.prototype.skipLines=function(H,G,F){if(H===undefined){H=1}if(G===undefined){G=1}H++;G++;var I;var J;this.selection=this.selection.replace(/(^\n*)/,"");this.startTag=this.startTag+s.$1;this.selection=this.selection.replace(/(\n*$)/,"");this.endTag=this.endTag+s.$1;this.startTag=this.startTag.replace(/(^\n*)/,"");this.before=this.before+s.$1;this.endTag=this.endTag.replace(/(\n*$)/,"");this.after=this.after+s.$1;if(this.before){I=J="";while(H--){I+="\\n?";J+="\n"}if(F){I="\\n*"}this.before=this.before.replace(new s(I+"$",""),J)}if(this.after){I=J="";while(G--){I+="\\n?";J+="\n"}if(F){I="\\n*"}this.after=this.after.replace(new s(I,""),J)}};h.prefixes="(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)";h.unwrap=function(G){var F=new s("([^\\n])\\n(?!(\\n|"+h.prefixes+"))","g");G.selection=G.selection.replace(F,"$1 $2")};h.wrap=function(G,F){h.unwrap(G);var H=new s("(.{1,"+F+"})( +|$\\n?)","gm");G.selection=G.selection.replace(H,function(I,J){if(new s("^"+h.prefixes,"").test(I)){return I}return J+"\n"});G.selection=G.selection.replace(/\s+$/,"")};h.doBold=function(F,G){return h.doBorI(F,G,2,"strong text")};h.doItalic=function(F,G){return h.doBorI(F,G,1,"emphasized text")};h.doBorI=function(L,J,K,F){L.trimWhitespace();L.selection=L.selection.replace(/\n{2,}/g,"\n");L.before.search(/(\**$)/);var I=s.$1;L.after.search(/(^\**)/);var G=s.$1;var M=Math.min(I.length,G.length);if((M>=K)&&(M!=2||K!=1)){L.before=L.before.replace(s("[*]{"+K+"}$",""),"");L.after=L.after.replace(s("^[*]{"+K+"}",""),"")}else{if(!L.selection&&G){L.after=L.after.replace(/^([*_]*)/,"");L.before=L.before.replace(/(\s?)$/,"");var H=s.$1;L.before=L.before+G+H}else{if(!L.selection&&!G){L.selection=F}var N=K<=1?"*":"**";L.before=L.before+N;L.after=N+L.after}}return};h.stripLinkDefs=function(G,F){G=G.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm,function(K,L,H,I,J){F[L]=K.replace(/\s*$/,"");if(I){F[L]=K.replace(/["(](.+?)[")]$/,"");return I+J}return""});return G};h.addLinkDef=function(M,I){var F=0;var H={};M.before=h.stripLinkDefs(M.before,H);M.selection=h.stripLinkDefs(M.selection,H);M.after=h.stripLinkDefs(M.after,H);var G="";var L=/(\[(?:\[[^\]]*\]|[^\[\]])*\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g;var K=function(O){F++;O=O.replace(/^[ ]{0,3}\[(\d+)\]:/," ["+F+"]:");G+="\n"+O};var J=function(P,Q,R,O){if(H[R]){K(H[R]);return Q+F+O}return P};M.before=M.before.replace(L,J);if(I){K(I)}else{M.selection=M.selection.replace(L,J)}var N=F;M.after=M.after.replace(L,J);if(M.after){M.after=M.after.replace(/\n*$/,"")}if(!M.after){M.selection=M.selection.replace(/\n*$/,"")}M.after+="\n\n"+G;return N};h.doLinkOrImage=function(F,G,I){F.trimWhitespace();F.findTags(/\s*!?\[/,/\][ ]?(?:\n[ ]*)?(\[.*?\])?/);if(F.endTag.length>1){F.startTag=F.startTag.replace(/!?\[/,"");F.endTag="";h.addLinkDef(F,null)}else{if(/\n\n/.test(F.selection)){h.addLinkDef(F,null);return}var H=function(L){if(L!==null){F.startTag=F.endTag="";var K=" [999]: "+L;var J=h.addLinkDef(F,K);F.startTag=I?"![":"[";F.endTag="]["+J+"]";if(!F.selection){if(I){F.selection="alt text"}else{F.selection="link text"}}}G()};if(I){a.prompt(B,b,H,1)}else{a.prompt(D,g,H)}return true}};a.makeAPI=function(){y.wmd={};y.wmd.editor=y.editor;y.wmd.previewManager=y.previewManager};a.startEditor=function(){if(y.wmd_env.autostart===false){a.makeAPI();return}var G;var F;var H=function(){y.panels=new y.PanelCollection();F=new y.previewManager();var I=F.refresh;G=new y.editor(I);F.refresh(true)};a.addEvent(top,"load",H)};y.previewManager=function(){var H=this;var V;var F;var N;var M;var S;var O;var I=3000;var P="delayed";var K=function(X,Y){a.addEvent(X,"input",Y);X.onpaste=Y;X.ondrop=Y;a.addEvent(X,"keypress",Y);a.addEvent(X,"keydown",Y);F=new y.inputPoller(Y,A)};var R=function(){var X=0;if(top.innerHeight){X=top.pageYOffset}else{if(E.documentElement&&E.documentElement.scrollTop){X=E.documentElement.scrollTop}else{if(E.body){X=E.body.scrollTop}}}return X};var L=function(){if(!y.panels.preview&&!y.panels.output){return}var Z=y.panels.input.value;if(Z&&Z==S){return}else{S=Z}var Y=new Date().getTime();if(!V&&y.showdown){V=new y.showdown.converter()}if(V){Z=V.makeHtml(Z)}var X=new Date().getTime();M=X-Y;G(Z);O=Z};var U=function(){if(N){top.clearTimeout(N);N=undefined}if(P!=="manual"){var X=0;if(P==="delayed"){X=M}if(X>I){X=I}N=top.setTimeout(L,X)}};var J=function(X){if(X.scrollHeight<=X.clientHeight){return 1}return X.scrollTop/(X.scrollHeight-X.clientHeight)};var W=function(){if(y.panels.preview){y.panels.preview.scrollTop=(y.panels.preview.scrollHeight-y.panels.preview.clientHeight)*J(y.panels.preview)}if(y.panels.output){y.panels.output.scrollTop=(y.panels.output.scrollHeight-y.panels.output.clientHeight)*J(y.panels.output)}};this.refresh=function(X){if(X){S="";L()}else{U()}};this.processingTime=function(){return M};this.output=function(){return O};this.setUpdateMode=function(X){P=X;H.refresh()};var Q=true;var G=function(aa){var X=C.getTop(y.panels.input)-R();if(y.panels.output){if(y.panels.output.value!==undefined){y.panels.output.value=aa;y.panels.output.readOnly=true}else{var Z=aa.replace(/&/g,"&amp;");Z=Z.replace(/</g,"&lt;");y.panels.output.innerHTML="<pre><code>"+Z+"</code></pre>"}}if(y.panels.preview){y.panels.preview.innerHTML=aa}W();if(Q){Q=false;return}var Y=C.getTop(y.panels.input)-R();if(v.isIE){top.setTimeout(function(){top.scrollBy(0,Y-X)},0)}else{top.scrollBy(0,Y-X)}};var T=function(){K(y.panels.input,U);L();if(y.panels.preview){y.panels.preview.scrollTop=0}if(y.panels.output){y.panels.output.scrollTop=0}};this.destroy=function(){if(F){F.destroy()}};T()};h.doAutoindent=function(F,G){F.before=F.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/,"\n\n");F.before=F.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/,"\n\n");F.before=F.before.replace(/(\n|^)[ \t]+\n$/,"\n\n");if(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(F.before)){if(h.doList){h.doList(F)}}if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(F.before)){if(h.doBlockquote){h.doBlockquote(F)}}if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(F.before)){if(h.doCode){h.doCode(F)}}};h.doBlockquote=function(F,G){F.selection=F.selection.replace(/^(\n*)([^\r]+?)(\n*)$/,function(L,K,J,I){F.before+=K;F.after=I+F.after;return J});F.before=F.before.replace(/(>[ \t]*)$/,function(J,I){F.selection=I+F.selection;return""});F.selection=F.selection.replace(/^(\s|>)+$/,"");F.selection=F.selection||"Blockquote";if(F.before){F.before=F.before.replace(/\n?$/,"\n")}if(F.after){F.after=F.after.replace(/^\n?/,"\n")}F.before=F.before.replace(/(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*$)/,function(I){F.startTag=I;return""});F.after=F.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/,function(I){F.endTag=I;return""});var H=function(J){var I=J?"> ":"";if(F.startTag){F.startTag=F.startTag.replace(/\n((>|\s)*)\n$/,function(L,K){return"\n"+K.replace(/^[ ]{0,3}>?[ \t]*$/gm,I)+"\n"})}if(F.endTag){F.endTag=F.endTag.replace(/^\n((>|\s)*)\n/,function(L,K){return"\n"+K.replace(/^[ ]{0,3}>?[ \t]*$/gm,I)+"\n"})}};if(/^(?![ ]{0,3}>)/m.test(F.selection)){h.wrap(F,y.wmd_env.lineLength-2);F.selection=F.selection.replace(/^/gm,"> ");H(true);F.skipLines()}else{F.selection=F.selection.replace(/^[ ]{0,3}> ?/gm,"");h.unwrap(F);H(false);if(!/^(\n|^)[ ]{0,3}>/.test(F.selection)&&F.startTag){F.startTag=F.startTag.replace(/\n{0,2}$/,"\n\n")}if(!/(\n|^)[ ]{0,3}>.*$/.test(F.selection)&&F.endTag){F.endTag=F.endTag.replace(/^\n{0,2}/,"\n\n")}}if(!/\n/.test(F.selection)){F.selection=F.selection.replace(/^(> *)/,function(I,J){F.startTag+=J;return""})}};h.doCode=function(F,G){var I=/\S[ ]*$/.test(F.before);var K=/^[ ]*\S/.test(F.after);if((!K&&!I)||/\n/.test(F.selection)){F.before=F.before.replace(/[ ]{4}$/,function(L){F.selection=L+F.selection;return""});var J=1;var H=1;if(/\n(\t|[ ]{4,}).*\n$/.test(F.before)){J=0}if(/^\n(\t|[ ]{4,})/.test(F.after)){H=0}F.skipLines(J,H);if(!F.selection){F.startTag=" ";F.selection="enter code here"}else{if(/^[ ]{0,3}\S/m.test(F.selection)){F.selection=F.selection.replace(/^/gm," ")}else{F.selection=F.selection.replace(/^[ ]{4}/gm,"")}}}else{F.trimWhitespace();F.findTags(/`/,/`/);if(!F.startTag&&!F.endTag){F.startTag=F.endTag="`";if(!F.selection){F.selection="enter code here"}}else{if(F.endTag&&!F.startTag){F.before+=F.endTag;F.endTag=""}else{F.startTag=F.endTag=""}}}};h.doList=function(Q,J,I){var S=/(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/;var R=/^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/;var F="-";var N=1;var L=function(){var T;if(I){T=" "+N+". ";N++}else{T=" "+F+" "}return T};var M=function(T){if(I===undefined){I=/^\s*\d/.test(T)}T=T.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm,function(U){return L()});return T};Q.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/,null);if(Q.before&&!/\n$/.test(Q.before)&&!/^\n/.test(Q.startTag)){Q.before+=Q.startTag;Q.startTag=""}if(Q.startTag){var H=/\d+[.]/.test(Q.startTag);Q.startTag="";Q.selection=Q.selection.replace(/\n[ ]{4}/g,"\n");h.unwrap(Q);Q.skipLines();if(H){Q.after=Q.after.replace(R,M)}if(I==H){return}}var K=1;Q.before=Q.before.replace(S,function(T){if(/^\s*([*+-])/.test(T)){F=s.$1}K=/[^\n]\n\n[^\n]/.test(T)?1:0;return M(T)});if(!Q.selection){Q.selection="List item"}var O=L();var G=1;Q.after=Q.after.replace(R,function(T){G=/[^\n]\n\n[^\n]/.test(T)?1:0;return M(T)});Q.trimWhitespace(true);Q.skipLines(K,G,true);Q.startTag=O;var P=O.replace(/./g," ");h.wrap(Q,y.wmd_env.lineLength-P.length);Q.selection=Q.selection.replace(/\n/g,"\n"+P)};h.doHeading=function(H,I){H.selection=H.selection.replace(/\s+/g," ");H.selection=H.selection.replace(/(^\s+|\s+$)/g,"");if(!H.selection){H.startTag="## ";H.selection="Heading";H.endTag=" ##";return}var J=0;H.findTags(/#+[ ]*/,/[ ]*#+/);if(/#+/.test(H.startTag)){J=s.lastMatch.length}H.startTag=H.endTag="";H.findTags(null,/\s?(-+|=+)/);if(/=+/.test(H.endTag)){J=1}if(/-+/.test(H.endTag)){J=2}H.startTag=H.endTag="";H.skipLines(1,1);var K=J==0?2:J-1;if(K>0){var G=K>=2?"-":"=";var F=H.selection.length;if(F>y.wmd_env.lineLength){F=y.wmd_env.lineLength}H.endTag="\n";while(F--){H.endTag+=G}}};h.doHorizontalRule=function(F,G){F.startTag="----------\n";F.selection="";F.skipLines(2,1,true)}};Attacklab.wmd_env={};Attacklab.account_options={};Attacklab.wmd_defaults={version:1,output:"Markdown",lineLength:40,delayLoad:false};if(!Attacklab.wmd){Attacklab.wmd=function(){Attacklab.loadEnv=function(){var b=function(d){if(!d){return}for(var c in d){Attacklab.wmd_env[c]=d[c]}};b(Attacklab.wmd_defaults);b(Attacklab.account_options);b(top.wmd_options);Attacklab.full=true;var a="bold italic link blockquote code image ol ul heading hr";Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||a};Attacklab.loadEnv()};Attacklab.wmd();Attacklab.wmdBase();Attacklab.Util.startEditor()}; \ No newline at end of file
diff --git a/askbot/skins/old/media/js/wmd/wmd-test.html b/askbot/skins/old/media/js/wmd/wmd-test.html
new file mode 100644
index 00000000..d748501a
--- /dev/null
+++ b/askbot/skins/old/media/js/wmd/wmd-test.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <title>Test WMD Page</title>
+
+ <link rel="stylesheet" type="text/css" href="wmd.css" />
+
+ <meta http-equiv="pragma" content="no-cache">
+ <meta http-equiv="cache-control" content="no-cache">
+ <meta http-equiv="pragma-directive" content="no-cache">
+ <meta http-equiv="cache-directive" content="no-cache">
+ <meta http-equiv="expires" content="0">
+
+ <script type="text/javascript" src="jQuery/jquery-1.2.6.js"></script>
+ <script type="text/javascript" src="showdown.js"></script>
+ </head>
+
+ <body>
+ <div id="wmd-button-bar" class="wmd-panel"></div>
+ <br/>
+ <textarea id="editor" class="wmd-panel"></textarea>
+ <br/>
+ <div id="previewer" class="wmd-panel"></div>
+ <br/>
+ <div id="wmd-output" class="wmd-panel"></div>
+
+ <p>To test that page up/down and arrow keys work, copy this above the WMD
+ control.</p>
+
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+ Scroll Down!<br/>
+
+ <script type="text/javascript" src="wmd.js"></script>
+ </body>
+</html> \ No newline at end of file
diff --git a/askbot/skins/default/media/js/wmd/wmd.css b/askbot/skins/old/media/js/wmd/wmd.css
index f1091a35..f1091a35 100644
--- a/askbot/skins/default/media/js/wmd/wmd.css
+++ b/askbot/skins/old/media/js/wmd/wmd.css
diff --git a/askbot/skins/default/media/js/wmd/wmd.js b/askbot/skins/old/media/js/wmd/wmd.js
index bc3b5a0c..bc3b5a0c 100644
--- a/askbot/skins/default/media/js/wmd/wmd.js
+++ b/askbot/skins/old/media/js/wmd/wmd.js
diff --git a/askbot/skins/old/media/style/auth.css b/askbot/skins/old/media/style/auth.css
new file mode 100644
index 00000000..33702758
--- /dev/null
+++ b/askbot/skins/old/media/style/auth.css
@@ -0,0 +1,48 @@
+#bigicon_providers, #smallicon_providers {
+ display: block;
+ padding: 0px;
+ width:600px;
+ margin:0px 0px 5px 0px;
+}
+
+.provider_logo {
+ display: inline-block;
+ padding: 4px;
+ border: 1px solid #DDD;
+ text-align: center;
+ vertical-align: middle;
+}
+
+.provider_logo.big {
+ height: 40px;
+ width: 90px;
+}
+
+.provider_logo.small {
+ height: 32px;
+ width: 32px;
+}
+
+.provider_logo.selected {
+ outline: 2px solid #FFF8C6;
+}
+
+.provider_logo .provider_url {
+ display: none;
+}
+
+.signin_form input[type="text"], .signin_form input[type="password"], .signin_form input[type="submit"] {
+ height: 28px;
+ line-height: 22px;
+ font-size: 140%;
+ border: 1px solid #999;
+}
+
+.signin_form .icon_input {
+ padding-left: 20px;
+}
+
+.or_label {
+ margin-top: 20px;
+ margin-bottom: 10px;
+} \ No newline at end of file
diff --git a/askbot/skins/old/media/style/jquery.autocomplete.css b/askbot/skins/old/media/style/jquery.autocomplete.css
new file mode 100644
index 00000000..b3d7b759
--- /dev/null
+++ b/askbot/skins/old/media/style/jquery.autocomplete.css
@@ -0,0 +1,37 @@
+.acInput {
+ width: 200px;
+}
+.acResults {
+ padding: 0px;
+ border: 1px solid WindowFrame;
+ background-color: Window;
+ overflow: hidden;
+}
+
+.acResults ul {
+ width: 100%;
+ list-style-position: outside;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.acResults li {
+ margin: 0px;
+ padding: 2px 5px;
+ cursor: pointer;
+ display: block;
+ width: 100%;
+ font: menu;
+ font-size: 12px;
+ overflow: hidden;
+}
+
+.acLoading {
+ background : url('../images/indicator.gif') right center no-repeat;
+}
+
+.acSelect {
+ background-color: Highlight;
+ color: HighlightText;
+}
diff --git a/askbot/skins/old/media/style/openid.css b/askbot/skins/old/media/style/openid.css
new file mode 100644
index 00000000..0d201df2
--- /dev/null
+++ b/askbot/skins/old/media/style/openid.css
@@ -0,0 +1,45 @@
+#openid_form {
+ width: 470px;
+}
+ #openid_form legend {
+ font-weight: bold;
+ }
+#openid_choice {
+ display: none;
+}
+#openid_input_area {
+ clear: both;
+ padding: 10px;
+}
+#openid_btns, #openid_btns br {
+ clear: both;
+}
+ #openid_highlight {
+ padding: 3px;
+ background-color: #FFFCC9;
+ float: left;
+ }
+ .openid_large_btn {
+ width: 100px;
+ height: 60px;
+ border: 1px solid #DDD;
+ margin: 3px;
+ float: left;
+ }
+ .openid_small_btn {
+ width: 24px;
+ height: 24px;
+ border: 1px solid #DDD;
+ margin: 3px;
+ float: left;
+ }
+ a.openid_large_btn:focus {
+ outline: none;
+ }
+ a.openid_large_btn:focus
+ {
+ -moz-outline-style: none;
+ }
+ .openid_selected {
+ border: 4px solid #DDD;
+ }
diff --git a/askbot/skins/old/media/style/prettify.css b/askbot/skins/old/media/style/prettify.css
new file mode 100644
index 00000000..10a37577
--- /dev/null
+++ b/askbot/skins/old/media/style/prettify.css
@@ -0,0 +1,27 @@
+/* Pretty printing styles. Used with prettify.js. */
+
+.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 { 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; }
+}
diff --git a/askbot/skins/old/media/style/style.css b/askbot/skins/old/media/style/style.css
new file mode 100644
index 00000000..1431135f
--- /dev/null
+++ b/askbot/skins/old/media/style/style.css
@@ -0,0 +1,2474 @@
+@import url(jquery.autocomplete.css);
+
+body {
+ background: #FFF;
+ font-size: 14px;
+ line-height: 150%;
+ margin: 0;
+ padding: 0;
+ color: #000;
+ font-family: sans-serif;
+}
+
+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, "Microsoft YaHei", 宋 体, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif;
+}
+
+p {
+ font-size: 14px;
+ line-height: 140%;
+ margin-bottom: 6px;
+ padding-left: 5px;
+}
+
+a {
+ color: #333333;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+/* 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: 160%;
+ padding: 10px 0 5px 5px;
+}
+
+.users-page h1, .tags-page h1 {
+ float: left;
+}
+
+.main-page h1 {
+ margin-right: 5px;
+}
+
+h2 {
+ font-size: 140%;
+ padding: 3px 0 3px 5px;
+}
+
+h3 {
+ font-size: 120%;
+ 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;
+}
+
+.content-wrapper {/* wrapper positioning class */
+ width: 960px;
+ margin: auto;
+ position:relative;
+}
+
+#ab-header {
+ margin-top: 0px;
+ background: #FFF;
+}
+
+#ab-header .content-wrapper {
+ height: 90px;/* same as logo height */
+}
+
+#CALeft {
+ width: 710px;
+ float: left;
+ position: relative;
+ padding: 0 5px 10px 5px;
+}
+
+#CARight {
+ width: 230px;
+ float: right;
+ padding: 0 5px 10px 5px;
+}
+
+#CAFull {
+ float: left;
+ padding: 0 5px 10px 5px;
+ width: 950px;
+}
+
+#ground {
+ width: 100%;
+ clear: both;
+ border-top: 1px solid #000;
+ padding: 6px 0 0 0;
+ text-align: center;
+ background: #777;
+}
+
+#ground p {
+ margin-bottom:0;
+}
+
+#ab-logo {
+ padding: 0px 0px 0px 10px;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ height: 90px;
+ width: 70px;
+}
+
+img.license-logo {
+ margin: 6px 0 10px 0;
+}
+
+#ab-meta-nav,
+#ab-main-nav {
+ position: absolute;
+ left: 100px;
+}
+
+#ab-meta-nav {
+ top: 0px;
+ height: 20px;
+ padding: 3px;
+ margin: 0;
+}
+
+#ab-meta-nav a {
+ height: 35px;
+ text-align: right;
+ margin-left: 20px;
+ text-decoration: underline;
+ color: #555555;
+}
+
+#ab-meta-nav a:first-child {
+ margin-left: 0;
+}
+
+#ab-meta-nav a#ab-responses {
+ margin-left: 3px;
+}
+#ab-meta-nav a img {
+ vertical-align:middle;
+ margin-bottom:2px;
+}
+
+#ab-meta-nav .user-info a {
+ margin: 0;
+ text-decoration: none;
+}
+
+#ab-main-nav {
+ bottom: 0;
+}
+
+#ab-main-nav a {
+ color: #333333;
+ background-color: #fff0e0;
+ border: 1px solid #888888;
+ border-bottom: none;
+ padding: 0px 12px 3px 12px;
+ height: 25px;
+ line-height: 30px;
+ margin-right: 10px;
+ font-size: 18px;
+ font-weight: 100;
+ text-decoration: none;
+ display: block;
+ float: left;
+}
+
+#ab-main-nav a:hover {
+ text-decoration: underline;
+}
+
+#ab-main-nav a.on {
+ height: 24px;
+ line-height: 28px;
+ border-bottom: 1px solid #a40000;
+ border-right: 1px solid #820000;
+ border-top: 1px solid #d40000;
+ border-left: 1px solid #d40000; /*background:#A31E39; */
+ background: #b03a48;
+ color: #FFF;
+ font-weight: 800;
+ text-decoration: none
+}
+
+#ab-main-nav a.special {
+ font-size: 18px;
+ color: #B02B2C;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+#ab-main-nav a.special:hover {
+ text-decoration: underline;
+}
+
+#searchBar {
+ display:inline-block;
+ background-color: #cccccc;/*888a85; /*#e9b96e;*/
+ width:700px;
+ border: 1px solid #aaaaaa;
+ padding: 4px 5px 4px 4px;
+}
+
+#searchBar .searchInput, #searchBar .searchInputCancelable {
+ font-size: 24px;
+ line-height: 24px;
+ height: 31px;
+ margin: 0px 4px 0px 0px;
+ padding: 5px 0 0 5px;
+}
+
+#searchBar .searchInput, #searchBar .searchInputCancelable {
+ width: 607px;
+}
+
+#searchBar .searchInputCancelable {
+ width: 564px;
+}
+
+#searchBar .searchBtn, #searchBar .cancelSearchBtn {
+ font-size: 20px;
+ color: #666;
+ background-color: #eee;
+ height: 40px;
+ border: 1px solid #aaa;
+ line-height: 22px;
+ text-align: center;
+ padding-bottom: 4px;
+}
+
+#searchBar .searchBtn {
+ margin: 0px;
+ width: 78px;
+}
+
+#searchBar .cancelSearchBtn {
+ width: 40px;
+ margin: 0px 3px 0px 0px;
+}
+
+#askFormBar {
+ display:inline-block;
+ background-color: #e3e3e3;/*888a85; /*#e9b96e;*/
+ border: 1px solid #aaaaaa;
+ padding: 4px 7px 5px 5px;
+}
+#askFormBar p {
+ width: 685px;
+ margin:0 0 5px 0;
+}
+#askFormBar .questionTitleInput {
+ font-size: 24px;
+ line-height: 24px;
+ height: 36px;
+ width: 680px;
+ margin: 0px;
+ padding: 5px 0 0 5px;
+}
+
+#question-list {
+ float: left;
+ position: relative;
+ background-color: #FFF;
+ padding: 0;
+ width: 100%;
+}
+
+.ask-page div#question-list {
+ float: none;
+ width: 706px;
+}
+.ask-page div#question-list h2 {
+ font-size: 14px;
+ padding-bottom: 0;
+}
+.ask-page div#question-list span {
+ padding: 3px 7px;
+ margin-right: 5px;
+ background: #ccc;
+}
+
+/* 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,
+.boxC 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;
+}
+
+.wildcard-tags {
+ clear: both;
+}
+
+ul.tags.marked-tags li,
+.wildcard-tags ul.tags li {
+ margin-bottom: 5px;
+}
+
+#tagSelector div.inputs {
+ clear: both;
+ float: none;
+}
+
+.tags-page ul.tags li,
+ul#ab-user-tags li {
+ width: 160px;
+}
+
+ul#related-tags li {
+ margin: 0 5px 3px 0;
+ float: left;
+ clear: left;
+}
+
+/* .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: 18px;
+ margin: 0 5px 0 0;
+ overflow-x: hidden;
+ padding: 0;
+}
+
+.tag-right {
+ background: url(../images/tag-left.png) no-repeat left center;
+ border: none;
+ display: block;
+ float: left;
+ height: 18px;
+ line-height: 20px;
+ font-weight: normal;
+ font-size: 11px;
+ padding: 0px 7px 0px 15px;
+ text-decoration: none;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.deletable-tag {
+ margin-right: 3px;
+ white-space: nowrap;
+}
+
+.deletable-tag .tag-right {
+ padding-right: 0px;
+ float: left;
+}
+.deletable-tag.tag-left {
+ padding-right: 3px;
+}
+
+.tags a.tag-right,
+.tags span.tag-right {
+ color: #333;
+ text-decoration: none;
+}
+
+span.delete-icon {
+ padding-left: 13px;
+ vertical-align: bottom;
+ background: url(../images/close-small-dark.png) no-repeat;
+ cursor: default;
+}
+span.delete-icon:hover {
+ background: url(../images/close-small-hover.png) no-repeat;
+}
+
+.tags span.delete-icon {
+ float: left;
+ height: 15px;
+ margin: 2px 0 0 1px;
+ display: block;
+}
+
+.tag-number {
+ font-weight: 700;
+ display: block;
+ float: left;
+ font-family: sans-serif;
+}
+
+.badges .tag-number {
+ float: none;
+ display: inline;
+ padding-right: 15px;
+}
+
+ul#search-tags {
+ padding-top: 3px;
+}
+
+.short-summary {
+ position: relative;
+ filter: inherit;
+ padding: 5px 2px 5px 2px;
+ border-top: 1px dashed #ccccce;
+ overflow: hidden;
+ width: 702px;
+ float: left;
+}
+
+.short-summary h2 {
+ font-size: 16px;
+ font-family: "Trebuchet MS", "segoe ui", arial, sans-serif;
+}
+
+.short-summary .userinfo .relativetime,
+.short-summary .userinfo a,
+.short-summary span.anonymous {
+ font-size: 11px;
+ clear:both;
+ font-weight: normal;
+ color: #555;
+}
+
+
+.short-summary .userinfo {
+ text-align:center;
+ line-height:16px;
+}
+
+.short-summary .counts {
+ float: right;
+ margin: 2px 0 0 5px;
+}
+
+.short-summary .counts .item-count {
+ border:1px solid #cccccc;
+ -moz-border-radius:5px;
+ -webkit-border-radius:5px;
+ padding:0px 5px 0px 5px;
+ font-size: 17px;
+ font-weight: 800;
+}
+
+.short-summary .counts .votes div,
+.short-summary .counts .views div,
+.short-summary .counts .answers div,
+.short-summary .counts .favorites div
+{
+ font-size: 12px;
+ line-height:14px;
+ color: #555;
+}
+
+.short-summary .tags {
+ margin-top: 0;
+}
+
+.no-votes .item-count {
+ background: white;
+ color: gray;
+}
+.some-votes .item-count {
+ background: #a3d0ff;
+ color: #4a4a4a;
+}
+.no-answers .item-count {
+ background: #b63333;
+ color: yellow;
+}
+.no-favorites .item-count {
+ background: #b63333;
+ color: yellow;
+}
+.some-answers .item-count {
+ background: #ffed9c;
+ color: #a4a4a4;
+}
+.some-favorites .item-count {
+ background:#338333;
+ color:#d0f5a9;
+}
+.accepted .item-count {
+ background:#338333;
+ color:#d0f5a9;
+}
+.no-views .item-count {
+ background: gray;
+ color: white;
+}
+.some-views .item-count {
+ background: #ff8c8c;
+ color: #4a4a4a;
+}
+
+.short-summary .votes,
+.short-summary .answers,
+.short-summary .favorites,
+.short-summary .views {
+ text-align: center;
+ margin: 0 3px;
+ padding: 4px 2px 0px 2px;
+ width: 46px;
+ float: right;
+ -moz-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+.short-summary .views {
+ width: 36px;
+ padding-right: 0;
+}
+
+.short-summary h2 {
+ padding-left: 0;
+}
+
+#question-table,
+.answer-table {
+ margin: 2px 0 10px 0;
+ border-spacing: 0px;
+}
+
+.answer-table {
+ border-bottom: 1px solid #bbb;
+ clear: both;
+}
+
+.evenMore {
+ font-size: 14px;
+ font-weight: 800;
+}
+
+.evenMore a {
+ text-decoration: underline;
+}
+
+.boxC {
+ background: white /*#cacdc6; /*f9f7ed;*/
+ padding: 10px 10px 10px 15px;
+ margin-bottom: 12px;
+}
+
+.boxC p {
+ margin-bottom: 4px;
+}
+
+.boxC p.info-box-follow-up-links {
+ text-align: right;
+ margin: 0;
+}
+
+.boxC h2,
+.boxC h3 {
+ padding-left: 0;
+}
+
+.boxC label {
+ color: #333;
+}
+
+.pager {
+ clear:both;
+ border-top: 1px solid #777;
+ margin-top: 10px;
+ margin-bottom: 16px;
+}
+
+.pagesize {
+ margin-top: 10px;
+ margin-bottom: 16px;
+ float: right;
+}
+
+/** PAGINATOR **/
+.paginator {
+ padding: 5px 0 10px 0;
+ font: normal 12px sans-serif;
+}
+
+.paginator .prev a, .paginator .prev a:visited,
+.paginator .next a, .paginator .next a:visited {
+ border: 1px solid #fff;
+ background-color: #fff;
+ color: #777;
+ padding: 2px 4px 3px 4px;
+ font: bold 100% sans-serif;
+}
+
+.paginator .prev {
+ margin-right: .5em;
+}
+
+.paginator .next {
+ margin-left: .5em;
+}
+
+.paginator .page a, .paginator .page a:visited, .paginator .curr {
+ padding: .25em;
+ font: normal .875em verdana;
+ border: 1px solid #ccc;
+ background-color: #fff;
+ margin: 0em .25em;
+ color: #777;
+}
+
+.paginator .curr {
+ background-color: #777;
+ color: #fff;
+ border: 1px solid #777;
+ font-weight: bold;
+}
+
+.paginator .page a:hover,
+.paginator .curr a:hover,
+.paginator .prev a:hover,
+.paginator .next a:hover {
+ color: #fff;
+ background-color: #777;
+ border: 1px solid #777;
+ text-decoration: none;
+}
+
+.paginator .text {
+ color: #777;
+ padding: .3em;
+ font: bold 100% sans-serif;
+}
+
+.paginator-container-left {
+ padding: 5px 0 10px 0;
+}
+
+p.rss {
+ float: right;
+ font-size: 12px;
+ color: #666;
+ margin: 0 2px 0 0;
+}
+
+p.rss a {
+ padding-left: 16px;
+ background: url(../images/feed-icon-small.png) no-repeat;
+}
+
+/* badges */
+a.medal {
+ font-size: 14px;
+ line-height: 250%;
+ font-weight: 800;
+ 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;
+}
+
+/*Tabs*/
+.tabBar {
+ background-color: #FFF;
+ border-bottom: 1px solid white;
+ height: 30px;
+ width: 100%;
+ clear: both;
+ margin-bottom: 3px;
+ margin-top: 3px;
+}
+
+.tabBar h2 {
+ float: left;
+}
+
+.tabsA, .tabsC {
+ background-color: #FFF;
+ float: right;
+ position: relative;
+ display: block;
+ font-weight: bold;
+ height: 20px;
+}
+
+/* tabsA - used for sorting */
+.tabsA { float: right; }
+.tabsC { float: left; }
+
+.tabsA a.on, .tabsC a.on, .tabsA a:hover, .tabsC a:hover {
+ background: #fff;
+ color: #a40000;
+ border-top: 1px solid #babdb6;
+ border-left: 1px solid #babdb6;
+ border-right: 1px solid #888a85;
+ border-bottom: 1px solid #888a85;
+ height: 24px;
+ line-height: 26px;
+ margin-top: 3px;
+}
+
+.tabsA a.rev.on, tabsA a.rev.on:hover {
+ padding: 0px 2px 0px 7px;
+}
+
+.tabsA a, .tabsC a{
+ background: #f9f7eb;
+ border-top: 1px solid #eeeeec;
+ border-left: 1px solid #eeeeec;
+ border-right: 1px solid #a9aca5;
+ border-bottom: 1px solid #888a85;
+ color: #888a85;
+ display: block;
+ float: left;
+ height: 20px;
+ line-height: 22px;
+ margin: 5px 0 0 4px;
+ padding: 0 2px;
+ text-decoration: none;
+}
+
+.tabsA .label, .tabsC .label {
+ float: left;
+ font-weight: bold;
+ color: #777;
+ margin: 8px 0 0 0px;
+}
+
+.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;
+}
+
+.questions-related {
+ font-weight: 700;
+ word-wrap: break-word;
+}
+
+.questions-related p {
+ line-height: 20px;
+ margin-bottom: 10px;
+ font-size: 100%;
+}
+
+.question-status {
+ margin-top: 10px;
+ padding: 20px;
+ background-color: #F5F5F5;
+ text-align: center;
+}
+
+.question-status h3 {
+ font-size: 125%;
+}
+.question-body, .answer-body {
+ min-height: 39px;
+ line-height: 20px;
+ overflow: auto;
+ width: 660px;
+}
+.question-body IMG, .answer-body IMG {
+ max-width: 600px;
+}
+
+.vote-buttons {
+ float: left;
+ text-align: center;
+ padding-top: 2px;
+}
+
+.vote-buttons IMG {
+ cursor: pointer;
+}
+
+.vote-buttons .button{
+ -moz-border-radius: 10px;
+ margin-top: 20px;
+ border-radius: 10px;
+ height: 20px;
+ width: 80px;
+ border-style: solid;
+ border-width: 1px;
+ padding: 8px;
+ float:left;
+}
+
+.vote-buttons .followed{
+ font-color: #000;
+ font-style:normal;
+ background: #cccccc;
+}
+
+.vote-buttons .followed div{
+ font-weight: normal;
+}
+
+.vote-buttons .followed div.unfollow{
+ display:none;
+}
+
+.vote-buttons .followed:hover{
+ color: #fff;
+ background: #8b0000;
+}
+
+.vote-buttons .followed:hover div{
+ display:none;
+}
+
+.vote-buttons .followed:hover div.unfollow{
+ display:inline;
+ font-weight: bold;
+}
+
+.vote-buttons .follow{
+ background: #cccccc;
+}
+
+.vote-buttons .follow:hover{
+ background: #234f32;
+ color: #fff;
+ font-weight: bold;
+}
+
+.vote-number {
+ font-family: Arial;
+ padding: 0px 0 3px 0;
+ font-size: 140%;
+ font-weight: bold;
+ color: #777;
+}
+
+.vote-buttons .notify-sidebar {
+ text-align: left;
+}
+.vote-buttons .notify-sidebar label {
+ vertical-align: top;
+}
+
+.question-img-upvote:hover {
+ background: url(../images/vote-arrow-up-on.png)
+}
+
+.question-img-downvote:hover {
+ background: url(../images/vote-arrow-down-on.png)
+}
+
+.question-img-favorite:hover {
+ background: url(../images/vote-favorite-on.png)
+}
+
+.favorite-number {
+ padding: 5px 0 0 10px;
+ font-size: 100%;
+ font-family: Arial;
+ font-weight: bold;
+ color: #777;
+ text-align: left;
+}
+
+.notify-me {
+ float: left;
+}
+
+.offensive-flag a {
+ color: #777;
+ padding: 3px;
+ cursor: pointer;
+}
+
+.offensive-flag a:hover {
+ background-color: #777;
+ text-decoration: none;
+ color: #fff;
+}
+
+.linksopt a {
+ color: #777;
+ padding: 3px;
+ cursor: pointer;
+}
+
+.linksopt a:hover {
+ background-color: #777;
+ text-decoration: none;
+ color: #fff;
+}
+
+.post-controls a {
+ color: #777;
+ padding: 3px;
+ cursor: pointer;
+ border: none;
+ background: none;
+ text-decoration: none;
+}
+
+.post-controls a:hover {
+ background-color: #777;
+ color: #fff;
+}
+
+.post-controls .sep {
+ color: #ccc;
+}
+
+.comments {
+ font-size: 12px;
+ width: 650px;
+ clear: both;
+}
+
+.comments .comment {
+ border-top: 1px dotted #cccccc;
+ margin: 0;
+ overflow: auto;
+}
+
+.comments .content {
+ margin-bottom: 7px;
+}
+
+.comments div.comment {
+ min-height: 25px;
+}
+
+.comments div.comment:hover {
+ background-color: #eee;
+}
+
+div.comment .comment-votes {
+ float: left;
+ width: 37px;
+ line-height: 130%;
+ padding: 6px 5px 6px 3px;
+}
+
+div.comment .comment-body {
+ line-height: 140%;
+ margin: 3px 26px 0 46px;
+ padding: 5px 3px;
+ color: #666;
+}
+
+div.comment .comment-body p{
+ font-size:inherit;
+ margin-bottom: 3px;
+ padding: 0;
+}
+
+div.comment .comment-delete {
+ float: right;
+ width: 14px;
+ line-height: 130%;
+ padding: 8px 6px;
+}
+
+div.comment .upvote {
+ margin: 0px;
+ padding-right: 17px;
+ padding-top: 2px;
+ text-align: right;
+ height: 20px;
+ font-size: 13px;
+ font-weight: bold;
+ color: #777;
+}
+
+div.comment .upvote.upvoted {
+ color: #d64000;
+}
+
+div.comment .upvote.hover {
+ background: url(../images/go-up-grey.png) no-repeat;
+ background-position: right 1px;
+}
+
+div.comment .upvote:hover {
+ background: url(../images/go-up-orange.png) no-repeat;
+ background-position: right 1px;
+}
+
+.comments div.controls {
+ clear: both;
+ background: url(../images/gray-up-arrow-h18px.png) no-repeat;
+ width: 100%;
+ padding-left: 12px;
+ margin: 3px 0 20px 5px;
+}
+
+.comments form.post-comments {
+ width: 560px;
+ margin: 3px 30px 4px 45px;
+}
+
+.comments textarea {
+ display: block;
+ height: 42px;
+ width: 572px;
+ margin: 6px 0 5px 1px;
+ font-family: sans-serif;
+ outline: none;
+ overflow:auto;
+ font-size: 12px;
+ line-height: 140%;
+ padding-left:2px;
+}
+
+.comments input {
+ margin-left: 10px;
+ margin-top: 1px;
+ vertical-align: top;
+ width: 100px;
+}
+
+.comments .counter {
+ display: inline-block;
+ width: 245px;
+ vertical-align: top;
+}
+
+.comments .controls a {
+ color: #888888;
+ padding: 0 3px 2px;
+}
+
+.comments .controls a:hover {
+ background-color: #777777;
+ color: white;
+ text-decoration: none;
+}
+
+.comments .help-text{
+ float: right;
+ text-align:right;
+ color: gray;
+ margin-bottom: 0px;
+ margin-top: 0px;
+ line-height: 50%;
+}
+
+span.text-counter {
+ margin-right: 20px;
+}
+
+span.form-error {
+ color: #990000;
+ font-weight: normal;
+ margin-left: 5px;
+}
+
+p.form-item {
+ margin: 0px;
+}
+
+div.comments {
+ padding: 0;
+}
+
+.comments .button {
+ color: black;
+ font-size: 11px;
+ background: #eeeeee;
+ padding: 3px;
+ cursor: pointer;
+}
+
+.comment a {
+ background-color: inherit;
+ color: blue;
+ padding: 0;
+}
+
+.comment a.author, a.author:hover {
+ background-color: inherit;
+ color: blue;
+ padding: 0;
+}
+
+.comment a.author:hover {
+ text-decoration: underline;
+}
+
+.accepted-answer {
+ background-color: #EBFFE6;
+ border-bottom-color: #9BD59B;
+}
+
+.accepted-answer .comments .button {
+ background-color: #CCFFBF;
+}
+
+.accepted-answer .comments {
+ background-color: #CCFFBF;
+}
+
+.answered {
+ background: #CCC;
+ color: #999;
+}
+
+.answered-accepted {
+ background: #CCC;
+ color: #763333;
+}
+
+.answered-by-owner {
+ background: #E9E9FF;
+}
+
+.answered-by-owner .comments .button {
+ background-color: #E6ECFF;
+}
+
+.answered-by-owner .comments {
+ background-color: #E6ECFF;
+}
+
+.answered-accepted strong {
+ color: #E1E818;
+}
+
+.answer-img-accept:hover {
+ background: url(../images/vote-accepted-on.png)
+}
+
+.deleted {
+ background: #F4E7E7 none repeat scroll 0 0;
+}
+
+
+.boxC ul {
+ margin-left: 15px;
+}
+
+.boxC li {
+ list-style-type: disc;
+ font-size: 13px;
+ line-height: 20px;
+ margin-bottom: 10px;
+}
+
+/* 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;
+}
+
+.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%;
+}
+
+span.form-error {
+ color: #990000;
+ font-size: 90%;
+ font-weight: normal;
+ margin-left: 5px;
+}
+
+.title-desc {
+ color: #666666;
+ font-size: 90%;
+}
+
+/*adjustment for editor preview*/
+#editor {
+ font-size: 100%;
+ min-height: 200px;
+ line-height: 18px;
+ width: 702px;
+ margin:0;
+}
+
+#id_title {
+ width: 100%;
+}
+
+.wmd-preview {
+ margin: 3px 0 5px 0;
+ padding: 6px;
+ width: 691px;
+ background-color: #F5F5F5;
+ min-height: 20px;
+ overflow: auto;
+}
+
+.wmd-preview pre {
+ background-color: #E7F1F8;
+
+}
+
+.wmd-preview blockquote {
+ background-color: #eee;
+}
+
+.wmd-preview IMG {
+ max-width: 600px;
+}
+
+.preview-toggle {
+ width: 100%;
+ color: #666; /*letter-spacing:1px;*/
+ text-align: left;
+}
+
+.preview-toggle span:hover {
+ cursor: pointer;
+}
+
+.after-editor {
+ margin-top: 10px;
+}
+
+.checkbox {
+ margin-left:5px;
+ font-weight:normal;
+ cursor:help
+}
+
+.question-options {
+ margin-top: 1px;
+ float: left;
+ color: #666;
+ line-height: 13px;
+}
+.question-options label {
+ vertical-align: text-bottom;
+}
+
+.ask-page input.submit,
+.edit-question-page input.submit {
+ float: left;
+}
+
+.edit-content-html {
+ border-top: 1px dotted #D8D2A9;
+ border-bottom: 1px dotted #D8D2A9;
+ margin: 5px 0 5px 0;
+}
+
+.revision {
+ margin: 10px 0 10px 0;
+ width: 100%;
+ font-size: 13px;
+}
+
+.revision .header {
+ background-color: #eee;
+ padding: 5px;
+ cursor: pointer;
+}
+
+.revision .author {
+ background-color: #E9E9FF;
+}
+
+.revision .summary {
+ padding: 5px 0 10px 0;
+}
+
+.revision .summary span {
+ background-color: yellow;
+ padding-left: 3px;
+ padding-right: 3px;
+ display: inline;
+}
+
+.revision h1 {
+ font-size: 130%;
+ font-weight: 600;
+ padding: 15px 0 15px 0;
+}
+
+.revision-mark {
+ width: 200px;
+ text-align: left;
+ display: inline-block;
+ font-size: 90%;
+ overflow: hidden;
+}
+
+.revision-number {
+ font-size: 300%;
+ font-weight: bold;
+ font-family: sans-serif;
+}
+
+.revision .answerbody {
+ padding: 10px 0 5px 10px;
+}
+
+/* Revision pages */
+del {
+ color: #FF5F5F;
+}
+
+del .post-tag {
+ color: #FF5F5F;
+}
+
+ins {
+ background-color: #97ff97;
+}
+
+ins p{
+ background-color: #97ff97;
+}
+
+ins .post-tag {
+ background-color: #97ff97;
+}
+
+/*用户资料页é¢*/
+.count {
+ font-family: Arial;
+ font-size: 200%;
+ font-weight: 700;
+ color: #777
+}
+
+.scoreNumber {
+ font-family: Arial;
+ font-size: 35px;
+ font-weight: 800;
+ color: #777;
+ line-height: 40px; /*letter-spacing:0px*/
+ margin-top: 3px;
+}
+
+.user-details {
+ font-size: 13px;
+}
+
+.user-about {
+ background-color: #EEEEEE;
+ height: 200px;
+ line-height: 20px;
+ overflow: auto;
+ padding: 10px;
+ width: 90%;
+}
+
+/*
+.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;
+}
+
+.relativetime {
+ font-weight: bold;
+ text-decoration: none;
+}
+
+.narrow .tags {
+ float: left;
+}
+
+.answer-summary {
+ display: block;
+ clear: both;
+ padding: 3px;
+}
+
+.answer-votes {
+ background-color: #EEEEEE;
+ color: #555555;
+ float: left;
+ font-family: Arial;
+ font-size: 110%;
+ font-weight: bold;
+ height: 15px;
+ padding: 4px 4px 5px;
+ text-align: center;
+ text-decoration: none;
+ width: 20px;
+ margin-right: 10px;
+}
+
+.vote-count {
+ font-family: Arial;
+ font-size: 160%;
+ font-weight: 700;
+ color: #777;
+}
+
+/* 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;
+}
+
+.footerLinks {
+ color: #EEE;
+ font-size: 13px; /* letter-spacing:1px;*/
+}
+
+.footerLinks a {
+ color: #FFF;
+ font-size: 13px;
+}
+
+a.comment {
+ background: #EEE;
+ color: #993300;
+ padding: 5px;
+}
+
+a.offensive {
+ color: #999;
+}
+
+.user {
+ padding: 5px;
+ line-height: 140%;
+ width: 170px;
+}
+
+.user ul {
+ margin: 0;
+ list-style-type: none;
+}
+
+.user .thumb {
+ clear: both;
+ float: left;
+ margin-right: 4px;
+ display: inline;
+}
+
+.message {
+ padding: 5px;
+ margin: 10px 0 10px 0;
+ background-color: #eee;
+ border: 1px solid #aaaaaa;
+}
+
+.message h1 {
+ padding-top: 0px;
+ font-size: 15px;
+}
+
+.message p {
+ margin-bottom: 0px;
+}
+
+p.space-above {
+ margin-top: 10px;
+}
+
+.warning {
+ color: red;
+}
+
+.darkred {
+ color: darkred;
+}
+
+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;
+}
+
+.ask-body {
+ padding-right: 10px;
+}
+
+.notify {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ z-index: 100;
+ padding: 0;
+ text-align: center;
+ font-weight: Bold;
+ color: #444;
+ background-color: #F4A83D;
+}
+
+.notify p {
+ margin-top: 5px;
+ margin-bottom: 5px;
+ font-size: 16px;
+}
+
+#close-notify {
+ position: absolute;
+ right: 5px;
+ top: 5px;
+ padding: 0 3px 0 3px;
+ color: #735005;
+ text-decoration: none;
+ font-size: 14px;
+ line-height: 18px;
+ background-color: #FAD163;
+ border: 2px #735005 solid;
+ cursor: pointer;
+}
+
+#close-notify:hover {
+ text-decoration: none;
+}
+
+.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: 15px;
+}
+
+.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 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;
+}
+
+.post-controls, .post-tags {
+ font-size: 11px;
+ line-height: 12px;
+ min-width: 200px;
+ padding-left: 5px;
+ margin-bottom: 5px;
+}
+
+.post-controls {
+ clear: left;
+ float: left;
+}
+
+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;
+}
+
+.post-update-info-container {
+ float: right;
+ min-width: 85px;
+}
+
+.post-update-info {
+ display: inline-block;
+ float: right;
+ font-size: 11px;
+ width: 190px;
+ margin-bottom: 5px;
+ line-height: 14px
+}
+
+.post-update-info p {
+ line-height: 13px;
+ font-size: 11px;
+ margin: 0 0 2px 1px;
+ padding: 0;
+}
+
+.post-update-info .gravatar {
+ float: left;
+ margin-right: 4px;
+}
+
+
+.post-update-info p.tip {
+ color: #444;
+}
+
+#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 */
+.answer-body a {
+ color:#0000ff;
+}
+.question-body a {
+ color:#0000ff;
+}
+.question-body li {
+ margin-bottom:0.7em;
+}
+.answer-body li {$
+ margin-bottom:0.7em;
+}
+.wmd-preview a {
+ color:#0000ff;
+}
+.wmd-preview li {
+ margin-bottom:0.7em;
+}
+
+.karma-summary {
+ padding:5px;
+ font-size:13px;
+}
+
+.karma-summary h3 {
+ text-align: center;
+ font-weight: bold;
+ padding:5px;
+}
+
+.karma-diagram {
+ width:377px;
+ height:300px;
+ float:left;
+ margin-right:10px;
+}
+
+.karma-details {
+ float:right;
+ width:300px;
+ height:250px;
+ overflow-y:auto;
+ word-wrap:break-word;
+}
+
+.karma-gained {
+ font-weight:bold;
+ background:#eee;
+ width:20px;
+ color:green;
+ padding:5px;
+}
+
+.karma-lost {
+ font-weight:bold;
+ background:#eee;
+ width:20px;
+ color:red;
+ padding:5px;
+}
+
+.search-result-summary {
+ font-weight: bold;
+ font-size:18px;
+ line-height:22px;
+ margin:0px 0px 0px 0px;
+ padding:2px 0 0 0;
+ float: left;
+}
+.search-tips {
+ font-size:12px;
+ line-height:12px;
+ color: #555;
+ margin:0 0 5px 0;
+ padding:0px;
+ clear:both;
+}
+.search-tips a {
+ text-decoration: underline;
+ color: #555;
+}
+
+.faq-rep-item {
+ text-align:right;
+ padding-right:5px;
+}
+
+img.gravatar {
+ margin:2px;
+}
+.user-info-table .gravatar {
+ margin:0;
+}
+
+.vote-notification {
+ z-index: 1;
+ cursor: pointer;
+ display: none;
+ position: absolute;
+ padding: 15px;
+ color: white;
+ background-color: darkred;
+ text-align: center;
+}
+
+.vote-notification a {
+ color: white;
+ text-decoration: underline;
+}
+
+#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;
+}
+
+.facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon {
+ background: url(../images/sprite.png) no-repeat;
+ display:block;
+ text-indent:-100em;
+ height:25px;
+ width:25px;
+}
+.facebook-share.icon {
+ background-position: -25px 0px;
+}
+.identica-share.icon {
+ background-position: -85px 0px;
+}
+.twitter-share.icon {
+ margin-top:10px;
+ background-position: 0px 0px;
+}
+.linkedin-share.icon {
+ background-position: -55px 0px;
+}
+/* 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 { 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; }
+}
+
+.follow-toggle {
+ border: 2px solid;
+ -moz-border-radius:5px;
+ -webkit-border-radius:5px;
+ border-radius: 5px;
+ height: auto;
+ width: 200px;
+ float:left;
+ padding: 0;
+ margin-right:100%;
+ margin-bottom: 10px;
+}
+
+.follow-toggle .follow{
+ font-color: #000;
+ font-style:normal;
+ background: #4cd46f;
+}
+
+.follow-toggle .follow:hover{
+ font-weight: bold;
+}
+
+.follow-toggle .unfollow{
+ background: #4cd46f;
+}
+
+.follow-toggle .unfollow:hover{
+ background: #d94849;
+}
+
+.follow-toggle .unfollow div.unfollow-red{
+ display:none;
+}
+
+.follow-toggle .unfollow div.unfollow-green{
+ background: #4cd46f;
+}
+
+.follow-toggle .unfollow:hover div.unfollow-red{
+ display:inline;
+ color:#fff;
+ font-weight:bold;
+}
+
+.follow-toggle .unfollow:hover div.unfollow-green{
+ display:none;
+}
diff --git a/askbot/skins/old/templates/404.html b/askbot/skins/old/templates/404.html
new file mode 100644
index 00000000..158bfb94
--- /dev/null
+++ b/askbot/skins/old/templates/404.html
@@ -0,0 +1,5 @@
+{% load extra_tags %}
+{% include_jinja "404.jinja.html" request %}
+{% comment %}
+this one has to be a django template because of use of default hander404
+{% endcomment %}
diff --git a/askbot/skins/old/templates/404.jinja.html b/askbot/skins/old/templates/404.jinja.html
new file mode 100644
index 00000000..2da99646
--- /dev/null
+++ b/askbot/skins/old/templates/404.jinja.html
@@ -0,0 +1,44 @@
+{% extends "one_column_body.html" %}
+<!-- template 404.jinja.html -->
+{% block title %}{% spaceless %}{% trans %}Page not found{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle%}
+<style type="text/css">
+ form input { margin-right: 5px; }
+</style>
+{% endblock %}
+{% block content %}
+<h1>{% trans %}Page not found{% endtrans %}</h1>
+<div id="main-body">
+ <div style="padding:5px 0px 10px 0;line-height:25px;">
+ <h2>{% trans %}Sorry, could not find the page you requested.{% endtrans %}</h2>
+ <div style="margin-top:5px">
+ {% trans %}This might have happened for the following reasons:{% endtrans %}<br/>
+ <ul>
+ <li>{% trans %}this question or answer has been deleted;{% endtrans %}</li>
+ <li>{% trans %}url has error - please check it;{% endtrans %}</li>
+ <li>{% trans %}the page you tried to visit is protected or you don't have sufficient points, see{% endtrans %} <a href="{% url faq %}">{% trans %}faq{% endtrans %}</a>;</li>
+ <li>{% trans %}if you believe this error 404 should not have occured, please{% endtrans %}
+ <a href="{{feedback_site_url}}" target="_blank">{% trans %}report this problem{% endtrans %}</a></li>
+ </u>
+ </div>
+ <script type="text/javascript">
+ var GOOG_FIXURL_LANG = '{{settings.LANGUAGE_CODE}}';
+ var GOOG_FIXURL_SITE = '{{site_url}}';
+ </script>
+ <script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
+ <ul>
+ <li><a href="#" id="linkPrevious">{% trans %}back to previous page{% endtrans %} »</li>
+ <li><a href="{% url questions %}">{% trans %}see all questions{% endtrans %} »</a></li>
+ <li><a href="{% url tags %}">{% trans %}see all tags{% endtrans %} »</a></li>
+ </u>
+ </div>
+</div>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $().ready(function(){
+ $("#linkPrevious").bind("click", back=function(){history.go(-1);})
+ });
+ </script>
+{% endblock %}
+<!-- end template 404.jinja.html -->
diff --git a/askbot/skins/old/templates/500.html b/askbot/skins/old/templates/500.html
new file mode 100644
index 00000000..8ec1bce4
--- /dev/null
+++ b/askbot/skins/old/templates/500.html
@@ -0,0 +1,5 @@
+{% load extra_tags %}
+{% include_jinja "500.jinja.html" request %}
+{% comment %}this template must be django
+because of the use of default handler500
+{% endcomment %}
diff --git a/askbot/skins/old/templates/500.jinja.html b/askbot/skins/old/templates/500.jinja.html
new file mode 100644
index 00000000..297ae736
--- /dev/null
+++ b/askbot/skins/old/templates/500.jinja.html
@@ -0,0 +1,25 @@
+{% extends "two_column_body.html" %}
+<!-- template 500.html -->
+{% block title %}{% spaceless %}{% trans %}Internal server error{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>{% trans %}Internal server error{% endtrans %}</h1>
+<div id="main-body">
+ <div style="padding:5px 0px 10px 0;line-height:25px">
+ {% trans %}system error log is recorded, error will be fixed as soon as possible{% endtrans %}<br/>
+ {% trans %}please report the error to the site administrators if you wish{% endtrans %}
+ <ul>
+ <li><a href="#" id="linkPrevious">{% trans %}back to previous page{% endtrans %}</li>
+ <li><a href="{% url questions %}">{% trans %}see latest questions{% endtrans %}</a></li>
+ <li><a href="{% url tags %}">{% trans %}see tags{% endtrans %}</a></li>
+ </u>
+ </div>
+</div>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $().ready(function(){
+ $("#linkPrevious").bind("click", back=function(){history.go(-1);})
+ });
+ </script>
+{% endblock %}
+<!-- end template 500.html -->
diff --git a/askbot/skins/old/templates/about.html b/askbot/skins/old/templates/about.html
new file mode 100644
index 00000000..fce4223e
--- /dev/null
+++ b/askbot/skins/old/templates/about.html
@@ -0,0 +1,10 @@
+{% 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>{% 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/old/templates/answer_edit.html b/askbot/skins/old/templates/answer_edit.html
new file mode 100644
index 00000000..e8cbc7ae
--- /dev/null
+++ b/askbot/skins/old/templates/answer_edit.html
@@ -0,0 +1,80 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- template answer_edit.html -->
+{% block title %}{% spaceless %}{% trans %}Edit answer{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle %}
+ <link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
+{% endblock %}
+{% block content %}
+<h1>
+ {% trans %}Edit answer{% endtrans %} [<a href="{{ answer.question.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 %}
+ <label for="id_revision" ><strong>{% trans %}revision{% endtrans %}:</strong></label> <br/>
+ {% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul() }}{% endif %}
+ <div style="vertical-align:middle">
+ {{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision" value="{% trans %}select revision{% endtrans %}">
+ </div>
+ {{ macros.edit_post(form) }}
+ <div class="after-editor">
+ <input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
+ <input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
+ </div>
+ {% if settings.WIKI_ON and answer.wiki == False %}
+ {{ macros.checkbox_in_div(form.wiki) }}
+ {% endif %}
+ </form>
+</div>
+{% endblock %}
+
+{% block sidebar %}
+ {% include "blocks/answer_edit_tips.html" %}
+{% endblock %}
+
+{% block endjs %}
+ {% include "blocks/editor_data.html" %}
+ <script type='text/javascript' src='{{"/js/editor.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'>
+ {% if settings.ENABLE_MATHJAX or settings.MARKUP_CODE_FRIENDLY %}
+ var codeFriendlyMarkdown = true;
+ {% else %}
+ var codeFriendlyMarkdown = 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">
+ $().ready(function(){
+ $("#nav_questions").attr('className',"on");
+ $('#editor').TextAreaResizer();
+
+ //highlight code synctax when editor has new text
+ $("#editor").typeWatch({highlight: false, wait: 3000,
+ captureLength: 5, callback: lanai.highlightSyntax});
+
+ //toggle preview of editor
+ var display = true;
+ var txt = "{% trans %}hide preview{% endtrans %}";
+ $('#pre-collapse').text(txt);
+ $('#pre-collapse').bind('click', function(){
+ txt = display ? "{% trans %}show preview{% endtrans %}" : "{% trans %}hide preview{% endtrans %}";
+ display = !display;
+ $('#previewer').toggle();
+ $('#pre-collapse').text(txt);
+ });
+
+ setupFormValidation($("#fmedit"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
+
+ $('#id_revision').unbind().change(function(){
+ $("#select_revision").click();
+ });
+
+ lanai.highlightSyntax();
+
+ });
+ </script>
+{% endblock %}
+<!-- end template answer_edit.html -->
diff --git a/askbot/skins/old/templates/ask.html b/askbot/skins/old/templates/ask.html
new file mode 100644
index 00000000..9aaa7e8c
--- /dev/null
+++ b/askbot/skins/old/templates/ask.html
@@ -0,0 +1,63 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- template ask.html -->
+{% block title %}{% spaceless %}{% trans %}Ask a question{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle %}
+ <link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
+{% endblock %}
+{# main contents of ask form is in the template input_bar #}
+{% block sidebar %}
+{% include "blocks/question_edit_tips.html" %}
+{% endblock %}
+{% block endjs %}
+ <script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/jquery.validate.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/post.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'>
+ 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>
+ {% include "blocks/editor_data.html" %}
+ {% if mandatory_tags %}
+ {% include "blocks/mandatory_tags_js.html" %}
+ {% endif %}
+ <script type='text/javascript'>
+ askbot['urls']['api_get_questions'] = '{% url api_get_questions %}';
+ {% if settings.ENABLE_MATHJAX or settings.MARKUP_CODE_FRIENDLY %}
+ var codeFriendlyMarkdown = true;
+ {% else %}
+ var codeFriendlyMarkdown = false;
+ {% endif %}
+ $().ready(function(){
+ liveSearch().init('ask_page');
+ //set current module button style
+ $('#editor').TextAreaResizer();
+
+ //highlight code synctax when editor has new text
+ $("#editor").typeWatch({highlight: false, wait: 3000,
+ captureLength: 5, callback: lanai.highlightSyntax});
+
+ //toggle preview of editor
+ //todo remove copy-paste
+ var display = true;
+ var txt = "[{% trans %}hide preview{% endtrans %}]";
+ $('#pre-collapse').text(txt);
+ $('#pre-collapse').bind('click', function(){
+ txt = display ? "[{% trans %}show preview{% endtrans %}]" : "[{% trans %}hide preview{% endtrans %}]";
+ display = !display;
+ $('#previewer').toggle();
+ $('#pre-collapse').text(txt);
+ });
+ //Tags autocomplete
+
+ {{ macros.tag_autocomplete_js(id = '#id_tags') }}
+
+ setupFormValidation($("#fmask"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
+ lanai.highlightSyntax();
+ });
+ </script>
+{% endblock %}
+<!-- end template ask.html -->
diff --git a/askbot/skins/old/templates/authopenid/changeemail.html b/askbot/skins/old/templates/authopenid/changeemail.html
new file mode 100644
index 00000000..1316a048
--- /dev/null
+++ b/askbot/skins/old/templates/authopenid/changeemail.html
@@ -0,0 +1,80 @@
+{% extends "one_column_body.html" %}
+{% 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 %}
+ {% else %}
+ {% trans %}Save your email address{% endtrans %}
+ {% endif %}
+ </h1>
+ <p class="message">
+ {% if user.email %}
+ {% trans %}change {{email}} info{% endtrans %}
+ {% else %}
+ {% trans %}here is why email is required, see {{gravatar_faq_url}}{% endtrans %}
+ {% endif %}
+ </p>
+ {% if msg %}
+ <p class="error">{{ msg }}</p>
+ {% endif %}
+ <div class="aligned">
+ <form action="." method="post" accept-charset="utf-8">{% csrf_token %}
+ {% if next %}
+ <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>
+ {% 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 %}">
+ {% if user.email %}
+ <input class="submit" type="submit" name="cancel" value="{% trans %}Cancel{% endtrans %}">
+ {% endif %}
+ </div>
+ </form>
+ </div>
+{% elif action_type=="validate" %}
+ <div id="main-bar" class="headNormal">
+ {% trans %}Validate email{% endtrans %}
+ </div>
+ <p class="message">
+ {% trans %}validate {{email}} info or go to {{change_email_url}}{% 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 %}
+ </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 %}
+ </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 %}
+ </p>
+{% elif action_type=="key_not_sent" %}
+ <div id="main-bar" class="headNormal">
+ {% trans %}email key not sent{% endtrans %}
+ </div>
+ <p class="message">
+ {% trans %}email key not sent {{email}} change email here {{change_link}}{% endtrans %}
+ </p>
+{% endif %}
+{% endblock %}
+<!-- end changeemail.html -->
diff --git a/askbot/skins/old/templates/authopenid/complete.html b/askbot/skins/old/templates/authopenid/complete.html
new file mode 100644
index 00000000..969a173f
--- /dev/null
+++ b/askbot/skins/old/templates/authopenid/complete.html
@@ -0,0 +1,84 @@
+{% extends "one_column_body.html" %}
+<!-- complete.html -->
+{#
+views calling this template:
+* django_authopenid.views.register with login_type='openid'
+* django_authopenid.views.signin - with login_type='legacy'
+
+purpose of this template is to allow user enter his/her name
+email and sign up for email alerts at the initial registratio
+
+parameters:
+* provider
+* login_type openid|legacy
+* username (same as screen name or username in the models, and nickname in openid sreg)
+* openid_register_form
+* openid_verify_form - not clear what this form is supposed to do, not used for legacy
+* email_feeds_form forum.forms.SimpleEmailSubscribeForm
+* openid_username_exists
+#}
+{% 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>
+ {% if openid_register_form.errors %}
+ <ul class="errorlist">
+ {% for error in openid_register_form.non_field_errors() %}
+ <li>{{error}}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ <div class="login">
+ {% if login_type=='openid' %}
+ <form name="fregister" action="{% url user_register %}" method="POST">{% csrf_token %}
+ {% elif login_type=='facebook' %}
+ <form name="fregister" action="" method="POST">{% csrf_token %}
+ {% else %}
+ <form name="fregister" action="{{ settings.LOGIN_URL }}" method="POST">{% csrf_token %}
+ {% endif %}
+ {{ openid_register_form.next }}
+ <div class="form-row-vertical">
+ <label for="id_username">{% trans %}Screen name label{% 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>
+ {% 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>
+ <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>
+ </form>
+ </div>
+{% endblock %}
+<!-- end complete.html -->
diff --git a/askbot/skins/old/templates/authopenid/confirm_email.txt b/askbot/skins/old/templates/authopenid/confirm_email.txt
new file mode 100644
index 00000000..1a0f4e63
--- /dev/null
+++ b/askbot/skins/old/templates/authopenid/confirm_email.txt
@@ -0,0 +1,12 @@
+{% trans %}Thank you for registering at our Q&A forum!{% endtrans %}
+
+{% trans %}Your account details are:{% endtrans %}
+
+{% trans %}Username:{% endtrans %} {{ username }}
+{% trans %}Password:{% endtrans %} {{ password }}
+
+{% trans %}Please sign in here:{% endtrans %}
+{{signup_url}}
+
+{% trans %}Sincerely,
+Forum Administrator{% endtrans %}
diff --git a/askbot/skins/old/templates/authopenid/email_validation.txt b/askbot/skins/old/templates/authopenid/email_validation.txt
new file mode 100644
index 00000000..087ce844
--- /dev/null
+++ b/askbot/skins/old/templates/authopenid/email_validation.txt
@@ -0,0 +1,14 @@
+{% trans %}Greetings from the Q&A forum{% endtrans %},
+
+{% trans %}To make use of the Forum, please follow the link below:{% endtrans %}
+
+{{validation_link}}
+
+{% trans %}Following the link above will help us verify your email address.{% endtrans %}
+
+{% 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 %}
diff --git a/askbot/skins/default/templates/authopenid/logout.html b/askbot/skins/old/templates/authopenid/logout.html
index a07b78d1..a07b78d1 100644
--- a/askbot/skins/default/templates/authopenid/logout.html
+++ b/askbot/skins/old/templates/authopenid/logout.html
diff --git a/askbot/skins/old/templates/authopenid/macros.html b/askbot/skins/old/templates/authopenid/macros.html
new file mode 100644
index 00000000..477d277c
--- /dev/null
+++ b/askbot/skins/old/templates/authopenid/macros.html
@@ -0,0 +1,58 @@
+{% macro login_provider_input(login_provider) %}
+ <input
+ name="{{login_provider.name}}"
+ type="image"
+ class="{{login_provider.type}}"
+ src="{{login_provider.icon_media_path|media}}"
+ alt="{{login_provider.tooltip_text}}"
+ title="{{login_provider.tooltip_text}}"
+ />
+{% endmacro %}
+
+{% macro provider_buttons(
+ login_form = None,
+ major_login_providers = None,
+ minor_login_providers = None,
+ hide_local_login = False,
+ settings = None,
+ logged_in = False
+ )
+%}
+ <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 %}
+ {% 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>
+{% endmacro %}
diff --git a/askbot/skins/old/templates/authopenid/providers_javascript.html b/askbot/skins/old/templates/authopenid/providers_javascript.html
new file mode 100644
index 00000000..0fe72eb3
--- /dev/null
+++ b/askbot/skins/old/templates/authopenid/providers_javascript.html
@@ -0,0 +1,55 @@
+<script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
+<script type="text/javascript" src="{{"/jquery-openid/jquery.openid.js"|media}}"></script>
+<script type="text/javascript">
+ var extra_token_name = {};
+ var create_pw_text = {};
+ var change_pw_text = {};
+ var authUrl = '/{% trans %}account/{% endtrans %}';
+ var siteName = '{{settings.APP_SHORT_NAME}}';
+ var provider_count = {{existing_login_methods|length}};
+ {% for login_provider in major_login_providers %}
+ {%if settings['SIGNIN_' + login_provider.name.upper() + '_ENABLED'] == True %}
+ {% if login_provider.extra_token_name %}
+ extra_token_name['{{login_provider.name}}'] = '{{login_provider.extra_token_name}}';
+ {% endif %}
+ {% if login_provider.type == 'password' %}
+ create_pw_text['{{login_provider.name}}'] = '{{login_provider.create_password_prompt}}';
+ change_pw_text['{{login_provider.name}}'] = '{{login_provider.change_password_prompt}}';
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ {% for login_provider in minor_login_providers %}
+ {% if settings['SIGNIN_' + login_provider.name.upper() + '_ENABLED'] == True %}
+ {% if login_provider.extra_token_name %}
+ extra_token_name['{{login_provider.name}}'] = '{{login_provider.extra_token_name}}';
+ {% endif %}
+ {% if login_provider.type == 'password' %}
+ create_pw_text['{{login_provider.name}}'] = '{{login_provider.create_password_prompt}}';
+ change_pw_text['{{login_provider.name}}'] = '{{login_provider.change_password_prompt}}';
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ {% if user.is_authenticated() %}
+ var userIsAuthenticated = true;
+ {% else %}
+ var userIsAuthenticated = false;
+ {% endif %}
+ askbot['settings']['signin_always_show_local_login'] = {% if settings.SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN %}true{% else %}false{% endif %};
+ $("body").authenticator();
+</script>
+{% if settings.FACEBOOK_KEY and settings.FACEBOOK_SECRET %}
+<div id="fb-root"></div>
+<script src="http://connect.facebook.net/en_US/all.js"></script>
+<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) {
+ $('#signin-form').submit();
+ }
+ });
+ };
+ });
+</script>
+{% endif %}
diff --git a/askbot/skins/default/templates/authopenid/signin.html b/askbot/skins/old/templates/authopenid/signin.html
index 49c447a1..49c447a1 100644
--- a/askbot/skins/default/templates/authopenid/signin.html
+++ b/askbot/skins/old/templates/authopenid/signin.html
diff --git a/askbot/skins/default/templates/authopenid/signup_with_password.html b/askbot/skins/old/templates/authopenid/signup_with_password.html
index 047ff076..047ff076 100644
--- a/askbot/skins/default/templates/authopenid/signup_with_password.html
+++ b/askbot/skins/old/templates/authopenid/signup_with_password.html
diff --git a/askbot/skins/old/templates/avatar/add.html b/askbot/skins/old/templates/avatar/add.html
new file mode 100644
index 00000000..68a188ef
--- /dev/null
+++ b/askbot/skins/old/templates/avatar/add.html
@@ -0,0 +1,15 @@
+{% extends "user_profile/user.html" %}
+{% import "macros.html" as macros %}
+{% block profilesection %}{% trans %}add avatar{% endtrans %}{% endblock %}
+{% block usercontent %}
+ <h2>{% trans %}Change avatar{% endtrans %}
+ <p>{% trans %}Your current avatar: {% endtrans %}</p>
+ {{ macros.gravatar(user, 128) }}
+ {% if not avatars %}
+ <p>{% trans %}You haven't uploaded an avatar yet. Please upload one now.{% endtrans %}</p>
+ {% endif %}
+ <form enctype="multipart/form-data" method="POST" action="{% url avatar_add %}">{% csrf_token %}
+ {{ upload_avatar_form.as_p() }}
+ <p><input type="submit" value="{% trans %}Upload New Image{% endtrans %}" /></p>
+ </form>
+{% endblock %}
diff --git a/askbot/skins/old/templates/avatar/change.html b/askbot/skins/old/templates/avatar/change.html
new file mode 100644
index 00000000..7921a662
--- /dev/null
+++ b/askbot/skins/old/templates/avatar/change.html
@@ -0,0 +1,24 @@
+{% extends "user_profile/user.html" %}
+{% import "macros.html" as macros %}
+{% block profilesection %}
+ {% trans %}change avatar{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ <p>{% trans %}Your current avatar: {% endtrans %}<br/>
+ {{ macros.gravatar(user, 128) }}
+ </p>
+ {% if not avatars %}
+ <p>{% trans %}You haven't uploaded an avatar yet. Please upload one now.{% endtrans %}</p>
+ {% else %}
+ <form method="POST" action="{% url avatar_change %}">{% csrf_token %}
+ <ul>
+ {{ primary_avatar_form.as_ul() }}
+ </ul>
+ <p><input type="submit" value="{% trans %}Choose new Default{% endtrans %}" /></p>
+ </form>
+ {% endif %}
+ <form enctype="multipart/form-data" method="POST" action="{% url avatar_add %}">{% csrf_token %}
+ {{ upload_avatar_form.as_p() }}
+ <p><input type="submit" value="{% trans %}Upload{% endtrans %}" /></p>
+ </form>
+{% endblock %}
diff --git a/askbot/skins/default/templates/avatar/confirm_delete.html b/askbot/skins/old/templates/avatar/confirm_delete.html
index 282d72fa..282d72fa 100644
--- a/askbot/skins/default/templates/avatar/confirm_delete.html
+++ b/askbot/skins/old/templates/avatar/confirm_delete.html
diff --git a/askbot/skins/old/templates/badge.html b/askbot/skins/old/templates/badge.html
new file mode 100644
index 00000000..ee7f5360
--- /dev/null
+++ b/askbot/skins/old/templates/badge.html
@@ -0,0 +1,24 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- template badge.html -->
+{% block title %}{% spaceless %}{% trans name=badge.name %}{{name}}{% endtrans %} - {% trans %}Badge{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>{% trans name=badge.name %}Badge "{{name}}"{% endtrans %}</h1>
+ <p>
+ <a href="{{badge.get_absolute_url()}}" title="{{ badge.get_type_display() }} : {% trans description=badge.description %}{{description}}{% endtrans %}" class="medal"><span class="{{ badge.css_class }}">&#9679;</span>&nbsp;{% trans name=badge.name%}{{name}}{% endtrans %}</a> {% trans description=badge.description %}{{description}}{% endtrans %}
+ </p>
+ <div>
+ {% if badge.awarded_count %}
+ <p style="float:left"><span class="count">{{ badge_recipients|length|intcomma }}</span>
+ <strong>{% trans num_awardees=badge_recipients|length %}user received this badge:{% pluralize %}users received this badge:{% endtrans %}</strong></p>
+ {% endif %}
+ </div>
+ <div id="award-list" style="clear:both;margin-left:20px;line-height:25px;">
+ {% for recipient in badge_recipients %}
+ <p style="width:180px;float:left"><a href="{{ recipient.get_absolute_url() }}">{{ recipient.username }}</a>
+ {{ macros.user_score_and_badge_summary(recipient) }}
+ </p>
+ {% endfor %}
+ </div>
+{% endblock %}
+<!-- end template badge.html -->
diff --git a/askbot/skins/old/templates/badges.html b/askbot/skins/old/templates/badges.html
new file mode 100644
index 00000000..bbd09951
--- /dev/null
+++ b/askbot/skins/old/templates/badges.html
@@ -0,0 +1,60 @@
+{% extends "two_column_body.html" %}
+<!-- template badges.html -->
+{% block title %}{% spaceless %}{% trans %}Badges summary{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>{% 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}}.
+{% endtrans %}
+</p>
+<div id="medalList">
+ {% for badge in badges %}
+ <div style="clear:both;line-height:30px">
+ <div style="float:left;min-width:30px;text-align:right;height:30px">
+ {% for a in mybadges %}
+ {% if a.badge_id == badge.id %}
+ <span style="font-size:175%; padding-right:5px; color:#5B9058;">&#10004;</span>
+ {% endif %}
+ {% endfor %}
+ </div>
+ <div style="float:left;width:230px;">
+ <a href="{{badge.get_absolute_url()}}"
+ title="{{badge.get_type_display()}} : {{badge.description}}"
+ class="medal"><span class="{{ badge.css_class }}">&#9679;</span>&nbsp;{{badge.name}}</a><strong>
+ &#215; {{ badge.awarded_count|intcomma }}</strong>
+ </div>
+ <p style="float:left;margin-top:8px;">{{badge.description}}</p>
+ </div>
+ {% endfor %}
+</div>
+{% endblock %}
+{% block sidebar %}
+<div class="boxC">
+ <h2>{% trans %}Community badges{% endtrans %}</h2>
+ <p>
+ <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 %}
+ </p>
+ <p>
+ <a
+ style="cursor:default;"
+ title="{% trans %}silver badge: occasionally awarded for the very high quality contributions{% endtrans %}"
+ class="medal"><span class="badge2">&#9679;</span>&nbsp;{% trans %}silver{% endtrans %}</a>
+ </p>
+ <p>
+ {% trans %}silver badge description{% 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 %}
+ </p>
+</div>
+{% endblock %}
+<!-- end template badges.html -->
diff --git a/askbot/skins/old/templates/base.html b/askbot/skins/old/templates/base.html
new file mode 100644
index 00000000..9f779945
--- /dev/null
+++ b/askbot/skins/old/templates/base.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- template base.html -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+ {% spaceless %}
+ <head>
+ <title>{% block title %}{% endblock %} - {{ settings.APP_TITLE|escape }}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ {% block meta_description %}
+ <meta name="description" content="{{settings.APP_DESCRIPTION|escape}}" />
+ {% endblock %}
+ <meta name="keywords" content="{%block keywords%}{%endblock%},{{settings.APP_KEYWORDS|escape}}" />
+ {% if settings.GOOGLE_SITEMAP_CODE %}
+ <meta name="google-site-verification" content="{{settings.GOOGLE_SITEMAP_CODE}}" />
+ {% endif %}
+ <link rel="shortcut icon" href="{{ settings.SITE_FAVICON|media }}" />
+ <link href="{{"/style/style.css"|media }}" rel="stylesheet" type="text/css" />
+ {{ skin.get_extra_css_link() }}
+ {% if settings.USE_CUSTOM_CSS %}
+ <link
+ href="{% url "custom_css" %}?v={{settings.MEDIA_RESOURCE_REVISION}}"
+ rel="stylesheet"
+ type="text/css"
+ />
+ {% endif %}
+ {% block forestyle %}{% endblock %}
+ {% if user_messages %}
+ <style type="text/css">
+ body { margin-top:2.4em; }
+ </style>
+ {% endif %}
+ {% if settings.USE_CUSTOM_HTML_HEAD %}
+ {{ settings.CUSTOM_HTML_HEAD }}
+ {% endif %}
+ <script type="text/javascript">
+ var askbot = {};
+ askbot['data'] = {};
+ askbot['urls'] = {};
+ askbot['settings'] = {};
+ askbot['messages'] = {};
+ </script>
+ {% block forejs %}
+ {% endblock %}
+ {# avoid adding javascript here so that pages load faster #}
+ </head>
+ {% endspaceless %}
+ <body class="{% block body_class %}{% endblock %}{% if page_class %} {{page_class}}{% endif %}">
+ {% include "blocks/system_messages.html" %}
+ {% include "custom_header.html" ignore missing %}
+ {% include "blocks/header.html" %}
+ <div class="content-wrapper">
+ {% block body %}
+ {% endblock %}
+ </div>
+ {% if settings.FOOTER_MODE == 'default' %}
+ {% include "blocks/footer.html" %}
+ {% elif settings.FOOTER_MODE == 'customize' %}
+ {{ settings.CUSTOM_FOOTER }}
+ {% endif %}
+ {% include "custom_footer.html" ignore missing %}
+ {% include "blocks/bottom_scripts.html" %}
+ {% block endjs %}
+ {% endblock %}
+ <script type="text/javascript">
+ for (url_name in askbot['urls']){
+ askbot['urls'][url_name] = cleanUrl(askbot['urls'][url_name]);
+ }
+ </script>
+ </body>
+</html>
+<!-- end template base.html -->
diff --git a/askbot/skins/default/templates/blocks/README b/askbot/skins/old/templates/blocks/README
index 88537d0a..88537d0a 100644
--- a/askbot/skins/default/templates/blocks/README
+++ b/askbot/skins/old/templates/blocks/README
diff --git a/askbot/skins/default/templates/blocks/answer_edit_tips.html b/askbot/skins/old/templates/blocks/answer_edit_tips.html
index 23e4df53..23e4df53 100644
--- a/askbot/skins/default/templates/blocks/answer_edit_tips.html
+++ b/askbot/skins/old/templates/blocks/answer_edit_tips.html
diff --git a/askbot/skins/default/templates/blocks/ask_form.html b/askbot/skins/old/templates/blocks/ask_form.html
index 606aef78..606aef78 100644
--- a/askbot/skins/default/templates/blocks/ask_form.html
+++ b/askbot/skins/old/templates/blocks/ask_form.html
diff --git a/askbot/skins/old/templates/blocks/bottom_scripts.html b/askbot/skins/old/templates/blocks/bottom_scripts.html
new file mode 100644
index 00000000..771c13a4
--- /dev/null
+++ b/askbot/skins/old/templates/blocks/bottom_scripts.html
@@ -0,0 +1,95 @@
+{# most, if not all javascripts should go here
+ this template is included at the very bottow of the
+ main template "base.html"
+#}
+<div id="no-javascript">
+ <noscript class="noscript">
+ {% trans app_name = settings.APP_SHORT_NAME %}Please note: {{app_name}} requires javascript to work properly, please enable javascript in your browser, <a href="{{noscript_url}}">here is how</a>{% endtrans %}
+ </noscript>
+</div>
+<script type="text/javascript">
+ var i18nLang = '{{settings.LANGUAGE_CODE}}';
+ 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']['user_signin'] = '{{ settings.LOGIN_URL }}';
+</script>
+<script
+ type="text/javascript"
+ {% if settings.DEBUG %}
+ src="{{"/js/jquery-1.4.3.js"|media}}"
+ {% else %}
+ src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"
+ {% endif %}
+></script>
+<script type='text/javascript' src="{{"/js/i18n.js"|media }}"></script>
+<script type='text/javascript' src="{{"/js/jquery.i18n.js"|media }}"></script>
+<script type='text/javascript' src="{% url "askbot_jsi18n" %}"></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({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+ tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+ });
+ </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;
+ }
+ );
+ //{# focus input on the search bar endcomment #}
+ {% if active_tab != "ask" %}
+ $('#keywords').focus();
+ {% else %}
+ $('#id_title').focus();
+ {% endif %}
+ });
+{% endif %}
+{% if user_messages %}
+ $('#validate_email_alert').click(function(){notify.close(true)})
+ notify.show();
+{% endif %}
+</script>
+{% if settings.USE_CUSTOM_JS %}
+<script
+ src="{% url "custom_js"%}?{{ settings.MEDIA_RESOURCE_REVISION }}"
+ type="text/javascript"
+></script>
+{% endif %}
+{% if settings.GOOGLE_ANALYTICS_KEY %}
+<script type="text/javascript">
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+ </script>
+ <script type="text/javascript">
+ try {
+ var pageTracker = _gat._getTracker('{{ settings.GOOGLE_ANALYTICS_KEY }}');
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+{% endif %}
diff --git a/askbot/skins/old/templates/blocks/editor_data.html b/askbot/skins/old/templates/blocks/editor_data.html
new file mode 100644
index 00000000..79ed96fb
--- /dev/null
+++ b/askbot/skins/old/templates/blocks/editor_data.html
@@ -0,0 +1,10 @@
+<script type="text/javascript">
+ {# data necessary for the post editor, goes into endjs block #}
+ 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 %}';
+ 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['urls']['upload'] = '{% url "upload" %}';
+</script>
diff --git a/askbot/skins/default/templates/blocks/footer.html b/askbot/skins/old/templates/blocks/footer.html
index 94c409ef..94c409ef 100644
--- a/askbot/skins/default/templates/blocks/footer.html
+++ b/askbot/skins/old/templates/blocks/footer.html
diff --git a/askbot/skins/default/templates/blocks/forum_body.html b/askbot/skins/old/templates/blocks/forum_body.html
index c36b48cd..c36b48cd 100644
--- a/askbot/skins/default/templates/blocks/forum_body.html
+++ b/askbot/skins/old/templates/blocks/forum_body.html
diff --git a/askbot/skins/default/templates/blocks/header.html b/askbot/skins/old/templates/blocks/header.html
index c4a09043..c4a09043 100644
--- a/askbot/skins/default/templates/blocks/header.html
+++ b/askbot/skins/old/templates/blocks/header.html
diff --git a/askbot/skins/default/templates/blocks/header_meta_links.html b/askbot/skins/old/templates/blocks/header_meta_links.html
index 83a5ed55..83a5ed55 100644
--- a/askbot/skins/default/templates/blocks/header_meta_links.html
+++ b/askbot/skins/old/templates/blocks/header_meta_links.html
diff --git a/askbot/skins/default/templates/blocks/input_bar.html b/askbot/skins/old/templates/blocks/input_bar.html
index 050fbb3b..050fbb3b 100644
--- a/askbot/skins/default/templates/blocks/input_bar.html
+++ b/askbot/skins/old/templates/blocks/input_bar.html
diff --git a/askbot/skins/old/templates/blocks/mandatory_tags_js.html b/askbot/skins/old/templates/blocks/mandatory_tags_js.html
new file mode 100644
index 00000000..f04a6345
--- /dev/null
+++ b/askbot/skins/old/templates/blocks/mandatory_tags_js.html
@@ -0,0 +1,25 @@
+<script type="text/javascript">
+ $(document).ready(function(){
+ var fake_tag = new Tag();
+ $('ul.tags .tag').each(function(idx, elem){
+ var tag_input = $('input#id_tags');
+ var callback = function(){
+ var new_tag = fake_tag.decodeTagName($(elem).html());
+ if (/\*$/.test(new_tag)){//strip the asterisk
+ new_tag = new_tag.substring(0, new_tag.length - 1);
+ }
+ if ($.trim(tag_input.val()) !== ''){
+ var entered_tags = tag_input.val().split(/\s+/);
+ } else {
+ var entered_tags = [];
+ }
+ if ($.inArray(new_tag, entered_tags) === -1){
+ entered_tags.push(new_tag);
+ tag_input.val(entered_tags.join(' '));
+ tag_input.focus();
+ }
+ };
+ setupButtonEventHandlers($(elem), callback);
+ });
+ });
+</script>
diff --git a/askbot/skins/default/templates/blocks/paginator.html b/askbot/skins/old/templates/blocks/paginator.html
index cef84f12..cef84f12 100644
--- a/askbot/skins/default/templates/blocks/paginator.html
+++ b/askbot/skins/old/templates/blocks/paginator.html
diff --git a/askbot/skins/default/templates/blocks/question_edit_tips.html b/askbot/skins/old/templates/blocks/question_edit_tips.html
index 83c36840..83c36840 100644
--- a/askbot/skins/default/templates/blocks/question_edit_tips.html
+++ b/askbot/skins/old/templates/blocks/question_edit_tips.html
diff --git a/askbot/skins/default/templates/blocks/system_messages.html b/askbot/skins/old/templates/blocks/system_messages.html
index 18ba03d7..18ba03d7 100644
--- a/askbot/skins/default/templates/blocks/system_messages.html
+++ b/askbot/skins/old/templates/blocks/system_messages.html
diff --git a/askbot/skins/default/templates/blocks/tag_selector.html b/askbot/skins/old/templates/blocks/tag_selector.html
index c3626be9..c3626be9 100644
--- a/askbot/skins/default/templates/blocks/tag_selector.html
+++ b/askbot/skins/old/templates/blocks/tag_selector.html
diff --git a/askbot/skins/old/templates/close.html b/askbot/skins/old/templates/close.html
new file mode 100644
index 00000000..d8160865
--- /dev/null
+++ b/askbot/skins/old/templates/close.html
@@ -0,0 +1,27 @@
+{% extends "one_column_body.html" %}
+<!-- template close.html -->
+{% block title %}{% spaceless %}{% trans %}Close question{% endtrans %}{% endspaceless %}{% endblock %}
+{% 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>
+ </p>
+ <form id="fmclose" action="{% url close question.id %}" method="post" >{% csrf_token %}
+ <p>
+ <strong>{% trans %}Reasons{% endtrans %}:</strong>
+ {{ form.reason }}
+ </p>
+ <p>
+ <input type="submit" value="{% trans %}OK to close{% endtrans %}" class="submit" />&nbsp;
+ <input id="btBack" type="button" class="submit" value="{% trans %}Cancel{% endtrans %}" />
+ </p>
+ </form>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $().ready(function(){
+ $('#btBack').bind('click', function(){ history.back(); });
+ });
+ </script>
+{% endblock %}
+<!-- end template close.html -->
diff --git a/askbot/skins/old/templates/faq.html b/askbot/skins/old/templates/faq.html
new file mode 100644
index 00000000..be25d2ee
--- /dev/null
+++ b/askbot/skins/old/templates/faq.html
@@ -0,0 +1,9 @@
+{% extends "two_column_body.html" %}
+<!-- template faq.html -->
+{% block title %}{% spaceless %}{% trans %}FAQ{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<div class="content">
+ {{forum_faq}}
+</div>
+{% endblock %}
+<!-- end template faq.html -->
diff --git a/askbot/skins/old/templates/faq_static.html b/askbot/skins/old/templates/faq_static.html
new file mode 100644
index 00000000..f1d34141
--- /dev/null
+++ b/askbot/skins/old/templates/faq_static.html
@@ -0,0 +1,99 @@
+{% extends "two_column_body.html" %}
+<!-- template faq.html -->
+{% block title %}{% spaceless %}{% trans %}FAQ{% endtrans %}{% endspaceless %}{% endblock %}
+{% 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>
+<h2>{% trans %}What questions should I avoid asking?{% 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>
+<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 %}
+</p>
+<h2>{% trans %}How does reputation system work?{% endtrans %}</h2>
+<p>{% trans %}Rep system summary{% 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>
+
+<table cellspacing="3" cellpadding="3">
+ <tr>
+ <th width="40px" style="text-align:right"></th>
+ <th width="300px"></th>
+ </tr>
+ <tr>
+ <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>
+ </tr>
+ <tr>
+ <td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_VOTE_DOWN}}</strong></td>
+ <td>{% trans %}downvote{% endtrans %}</td>
+ </tr><tr>
+ <td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_ACCEPT_OWN_ANSWER}}</strong></td>
+ <td>{% trans %} accept own answer to own questions{% endtrans %}</td>
+ </tr>
+ </tr><tr>
+ <td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_CLOSE_OWN_QUESTIONS}}</strong></td>
+ <td>{% trans %}open and close own questions{% endtrans %}</td>
+ </tr>
+ <tr>
+ <td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_RETAG_OTHERS_QUESTIONS}}</strong></td>
+ <td>{% trans %}retag other's questions{% endtrans %}</td>
+ </tr>
+ {% if settings.WIKI_ON %}
+ <tr>
+ <td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_EDIT_WIKI}}</strong></td>
+ <td>{% trans %}edit community wiki questions{% endtrans %}</td>
+ </tr>
+ {% endif %}
+ <tr>
+ <td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_EDIT_OTHERS_POSTS}}</strong></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>
+ </tr>
+</table>
+<a id='gravatar'></a><h2>{% trans %}what is gravatar{% endtrans %}</h2>
+{% trans %}gravatar faq info{% 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 %}
+<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>
+<p> {% trans %}Goal of this site is...{% endtrans %} {% trans %}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.{% endtrans %}
+{% 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>
+</div>
+<script type="text/javascript">
+ //highlihts section if url has matching #anchor_name
+ $(document).ready(function (){
+ var hash = window.location.hash;
+ if (hash.length > 1){
+ $(hash).parent().addClass('highlight');
+ window.location.hash = hash;
+ }
+ })
+</script>
+{% endblock %}
+<!-- end template faq.html -->
diff --git a/askbot/skins/old/templates/feedback.html b/askbot/skins/old/templates/feedback.html
new file mode 100644
index 00000000..d5e8b3a7
--- /dev/null
+++ b/askbot/skins/old/templates/feedback.html
@@ -0,0 +1,46 @@
+{% extends "two_column_body.html" %}
+<!-- template feedback.html -->
+{% block title %}{% spaceless %}{% trans %}Feedback{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>{% trans %}Give us your feedback!{% endtrans %}</h1>
+<form method="post" action="{% url feedback %}" accept-charset="utf-8">{% csrf_token %}
+ {% if user.is_authenticated() %}
+ <p class="message">
+ {% trans user_name=user.username %}
+ <span class='big strong'>Dear {{user_name}}</span>, we look forward to hearing your feedback.
+ Please type and send us your message below.
+ {% endtrans %}
+ <p>
+ {% else %}
+ <p class="message">
+ {% trans %}
+ <span class='big strong'>Dear visitor</span>, we look forward to hearing your feedback.
+ Please type and send us your message below.
+ {% endtrans %}
+ </p>
+ <div class="form-row"><label>{{form.name.label}}</label><br/>{{form.name}}</div>
+ <div class="form-row">
+ <label>{{form.email.label}}
+ {% if form.errors.email %}
+ <span class='error'>{% trans %}(please enter a valid email){% endtrans %}</span>
+ {% endif %}
+ </label><br/>{{form.email}}
+ </div>
+ {% endif %}
+ <div class="form-row">
+ <label>{{form.message.label}}
+ {% if form.errors.message %}
+ <span class="error">{% trans %}(this field is required){% endtrans %}</span>
+ </label>
+ {% endif %}
+ <br/>
+ {{form.message}}
+ </div>
+ {{form.next}}
+ <div class="submit-row">
+ <input type="submit" class="submit" value="{% trans %}Send Feedback{% endtrans %}"/>&nbsp;
+ <input type="submit" class="submit" name="cancel" value="{% trans %}Cancel{% endtrans %}"/>
+ </div>
+</form>
+{% endblock %}
+<!-- end template feedback.html -->
diff --git a/askbot/skins/old/templates/feedback_email.txt b/askbot/skins/old/templates/feedback_email.txt
new file mode 100644
index 00000000..a729066a
--- /dev/null
+++ b/askbot/skins/old/templates/feedback_email.txt
@@ -0,0 +1,13 @@
+{% spaceless %}
+{% trans site_title = settings.APP_SHORT_NAME|safe %}
+Hello, this is a {{site_title}} forum feedback message.
+{% endtrans %}
+{% endspaceless %}
+{% if user.is_authenticated() -%}
+ {{user.username|safe}} ({{user.email|safe}}, ip:{{request.META.REMOTE_ADDR}})
+{%- else %}
+ {%- if name %}{{name|safe}} {% else %}{% trans %}Anonymous{% endtrans %} {% endif -%}
+ ({%- if email %}, {% endif -%}ip:{{request.META.REMOTE_ADDR}})
+{%- endif %} wrote:
+
+{{message|safe}}
diff --git a/askbot/skins/old/templates/import_data.html b/askbot/skins/old/templates/import_data.html
new file mode 100644
index 00000000..affeaa73
--- /dev/null
+++ b/askbot/skins/old/templates/import_data.html
@@ -0,0 +1,31 @@
+{% extends "two_column_body.html" %}
+{% block title %}{% trans %}Import StackExchange data{% endtrans %}{% endblock %}
+{% block content %}
+ <h1>{% trans %}Import StackExchange data{% endtrans %}</h1>
+ {% if need_configuration %}
+ <p><em>Note:</em> to import stackexchange data, first add
+ <code>'askbot.importers.stackexchange',</code>
+ to the <code>INSTALLED_APPS</code> setting in your <code>settings.py</code>
+ file, then run <code>python manage.py syncdb</code>, and restart the application.
+ After that, pleale return to here and try again.
+ </p>
+ {% else %}
+ <p class="message">{% trans %}<em>Warning:</em> if your database is not empty, please back it up
+ before attempting this operation.{% endtrans %}
+ </p>
+ <p>{% trans %}Upload your stackexchange dump .zip file, then wait until
+ the data import completes. This process may take several minutes.
+ Please note that feedback will be printed in plain text.
+ {% endtrans %}
+ </p>
+ <form id="load-dump-form" method="post" enctype="multipart/form-data">{% csrf_token %}
+ <table>
+ {{dump_upload_form.as_table()}}
+ </table>
+ <input type="submit" value="{% trans %}Import data{% endtrans %}" />
+ </form>
+ <p>{% trans %}In the case you experience any difficulties in using this import tool,
+ please try importing your data via command line: <code>python manage.py load_stackexchange path/to/your-data.zip</code>{% endtrans %}
+ </p>
+ {% endif %}
+{% endblock %}
diff --git a/askbot/skins/old/templates/instant_notification.html b/askbot/skins/old/templates/instant_notification.html
new file mode 100644
index 00000000..92799a96
--- /dev/null
+++ b/askbot/skins/old/templates/instant_notification.html
@@ -0,0 +1,42 @@
+{% trans %}<p>Dear {{receiving_user_name}},</p>{% endtrans %}
+ {% if update_type == 'question_comment' %}
+{% 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 %}
+{% trans %}<p>Sincerely,<br/>Forum Administrator</p>{% endtrans %}
diff --git a/askbot/skins/old/templates/macros.html b/askbot/skins/old/templates/macros.html
new file mode 100644
index 00000000..26e48373
--- /dev/null
+++ b/askbot/skins/old/templates/macros.html
@@ -0,0 +1,757 @@
+{%- macro user_score_and_badge_summary(user) -%}
+ <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 %}
+ </span>
+ {% endif %}
+{%- endmacro -%}
+
+{%- 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 %}
+ </div>
+{%- endmacro -%}
+
+{%- macro follow_user_toggle(visitor = None, subject = None) -%}
+ {% if visitor.is_anonymous() %}
+ {{ follow_toggle(True, 'user', subject.username, subject.id) }}
+ {% else %}
+ {% if visitor != subject %}
+ {% if visitor.is_following(subject) %}
+ {{ follow_toggle(False, 'user', subject.username, subject.id) }}
+ {% else %}
+ {{ follow_toggle(True, 'user', subject.username, subject.id) }}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro user_long_score_and_badge_summary(user) -%}
+ <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 -%}
+ </span></a>
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro user_country_flag(user) -%}
+ {% if user.country and user.show_country %}
+ <img class="flag"
+ src="{{ ('/images/flags/' ~ user.country.code|lower ~ '.gif')|media }}"
+ alt="{% trans
+ country=user.country.name
+ %}flag of {{country}}{%
+ endtrans %}"
+ title="{% trans
+ country=user.country.name,
+ person=user.username %}{{person}} is from {{country}}{%
+ endtrans %}"
+ />
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro user_country_name_and_flag(user) -%}
+ {% if user.country and user.show_country %}
+ {{ user.country.name }}
+ {{ user_country_flag(user) }}
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro user_full_location(user) -%}
+ {% if user.location %}
+ {{ user.location }},
+ {% endif %}
+ {{ user_country_name_and_flag(user) }}
+{%- endmacro -%}
+
+{%- macro user_list(users, profile_section = None) -%}
+<div class="userList">
+ <table class="list-table">
+ <tr>
+ <td class="list-td">
+ {% for user in users %}
+ <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>
+ </ul>
+ </div>
+ {% if loop.index is divisibleby 7 %}
+ </td>
+ <td>
+ {% endif %}
+ {% endfor %}
+ </td>
+ </tr>
+ </table>
+</div>
+{%- endmacro -%}
+
+{%- macro paginator(p, position='left') -%}{# 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 %}">
+ &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>
+ {% 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="{{p.base_url}}page={{ num }}{{ p.extend_url }}" title="{% trans %}page number {{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>
+ {% 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>
+ {% 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>
+ {% endif %}
+ </div>
+{% endif %}
+{% endspaceless %}
+{%- endmacro -%}
+
+{#todo: rename this to avatar #}
+{%- macro gravatar(user, size) -%}
+{% spaceless %}
+<a style="text-decoration:none"
+ href="{{ user.get_absolute_url() }}"
+><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 %}"
+/></a>
+{% endspaceless %}
+{%- endmacro -%}
+
+{%- macro user_website_link(user, max_display_length=25) -%}
+ {% if user.website %}
+ <a
+ href="{{user.website}}"
+ title="{% trans username=user.username|escape, url=user.website %}{{username}}'s website is {{url}}{% endtrans %}"
+ {% if user.can_have_strong_url() == False %}
+ rel="nofollow"
+ {% endif %}
+ >
+ {{user.website|truncate(length=max_display_length, killwords=True, end='...')}}
+ </a>
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro post_contributor_avatar_and_credentials(post, user) -%}
+ {% 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_website_link(user) }}
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro post_contributor_info(post, contributor_type, is_wiki, wiki_min_rep) -%}
+{# 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" %}
+ <div class='post-update-info'>
+ {% if is_wiki %}
+ <p>
+ {%- if post.post_type == 'question' -%}
+ {%- trans %}asked{% endtrans %}
+ {% elif post.post_type == 'answer' %}
+ {%- trans %}answered{% endtrans %}
+ {% else %}
+ {%- trans %}posted{% endtrans %}
+ {% endif %}
+ <strong>{{post.added_at|diff_date}}</strong>
+ </p>
+ <img
+ src="{{'/images/wiki.png'|media}}"
+ alt="{% trans %}this post is marked as community wiki{% endtrans %}"
+ style="float:left"
+ />
+ <p class="tip">{% trans %}This post is a wiki.
+ Anyone with karma &gt;{{wiki_min_rep}} is welcome to improve it.{% endtrans %}</p>
+ {% else %}
+ <p style="line-height:12px;">
+ {# todo: access to class names needs to be removed here #}
+ {% if post.post_type == 'question' %}
+ {% trans %}asked{% endtrans %}
+ {% elif post.post_type == 'answer' %}
+ {% trans %}answered{% endtrans %}
+ {% else %}
+ {% trans %}posted{% endtrans %}
+ {% endif %}
+ {% if post.__class__.__name__ in ('QuestionRevision', 'AnswerRevision') %}
+ <strong>{{post.revised_at|diff_date}}</strong>
+ {% else %}
+ <strong>{{post.added_at|diff_date}}</strong>
+ {% endif %}
+ </p>
+ {{ post_contributor_avatar_and_credentials(post, post.author) }}
+ {% endif %}
+ </div>
+{% elif contributor_type=="last_updater" %}
+ {% if post.post_type in ('Question', 'Answer') %}
+ {% set last_edited_at = post.last_edited_at %}
+ {% set original_author = post.author %}
+ {% set update_author = post.last_edited_by %}
+ {% elif post.post_type in ('QuestionRevision', 'AnswerRevision') %}
+ {% set last_edited_at = post.revised_at %}
+ {% set original_author = None %}{# fake value to force display widget in the revision views #}
+ {% set update_author = post.author %}
+ {% endif %}
+ {% if last_edited_at %}
+ <div class='post-update-info'>
+ <p style="line-height:12px;">
+ <a
+ {% if post.post_type == 'Question' %}
+ href="{% url question_revisions post.id %}"
+ {% else %}
+ href="{% url answer_revisions post.id %}"
+ {% endif %}
+ >{% trans %}updated{% endtrans %} <strong>{{ last_edited_at|diff_date }}</strong></a>
+ </p>
+ {% if original_author != update_author or is_wiki %}
+ {{ post_contributor_avatar_and_credentials(post, update_author) }}
+ {% endif %}
+ </div>
+ {% endif %}
+{% endif %}
+{%- endmacro -%}
+
+{%- macro if_else(condition, if_true, if_false) -%}
+ {%- if condition == True -%}
+ {{if_true}}
+ {%- else -%}
+ {{if_false}}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro tag_cloud(tags = None, font_sizes = 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>
+ </span>
+ {% endfor %}
+{%- endmacro -%}
+
+{%- macro tag_list_widget(
+ tags,
+ id = None,
+ deletable = False,
+ make_links = True,
+ url_params = None,
+ css_class = None
+ )
+-%}
+<ul {% if id %}id="{{ id }}"{% endif %}
+ class="tags{% if css_class %} {{css_class}}{% endif %}"
+>
+ {% if tags %}
+ {% for tag in tags %}
+ {{ tag_widget(
+ tag,
+ deletable = deletable,
+ is_link = make_links,
+ url_params = url_params,
+ html_tag = 'li'
+ )}}
+ {% endfor %}
+ {% endif %}
+</ul>
+{%- endmacro -%}
+
+{# todo: remove the extra content argument to make its usage more explicit #}
+{%- macro tag_widget(
+ tag,
+ deletable = False,
+ is_link = True,
+ delete_link_title = None,
+ css_class = None,
+ url_params = None,
+ html_tag = 'div',
+ extra_content = ''
+ )
+-%}
+ {% 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 %}"
+ {% endif %}
+ rel="tag"
+ >{{ tag|replace('*', '&#10045;') }}</{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %}>
+ {% if deletable %}
+ <span class="delete-icon"
+ {% if delete_link_title %}
+ title="{{ delete_link_title }}"
+ {% endif %}
+ ></span>
+ {% endif %}
+ </{{ html_tag }}>
+ {{ extra_content }}
+ {% endspaceless %}
+{%- endmacro -%}
+
+{%- macro radio_select(name = None, value = None, choices = None) -%}
+ {% for choice in choices %}
+ <p class="choice">
+ {% set id = "id_" ~ name ~ "_" ~ choice[0] %}
+ <input
+ id="{{ id }}"
+ name="{{ name }}"
+ value="{{ choice[0] }}"
+ type="radio"
+ {% if value == choice[0] %}
+ checked="checked"
+ {% endif %}
+ />
+ <label for="{{ id }}">{{ choice[1] }}</label>
+ </p>
+ {% endfor %}
+{%- endmacro -%}
+
+{%- macro question_summary(question, extra_class=None) -%}
+ <div class="short-summary{% if extra_class %} {{extra_class}}{% endif %}">
+ <div class="counts">
+ <div class="views
+ {% if question.view_count == 0 -%}
+ no-views
+ {% else -%}
+ some-views
+ {%- endif -%}">
+ <span class="item-count">{{question.view_count|humanize_counter}}</span>
+ <div>
+ {% trans cnt=question.view_count %}view{% pluralize %}views{% endtrans %}
+ </div>
+ </div>
+ <div class="answers
+ {% if question.answer_count == 0 -%}
+ no-answers
+ {% else -%}
+ {%- if question.answer_accepted -%}
+ accepted
+ {%- else -%}
+ some-answers
+ {%- endif -%}
+ {%- endif -%}">
+ <span
+ class="item-count"
+ >{{question.answer_count|humanize_counter}}{% if question.answer_accepted%}&#10003;{% endif %}</span>
+ <div>
+ {% trans cnt=question.answer_count %}answer{% pluralize %}answers{% endtrans %}
+ </div>
+ </div>
+ <div class="votes
+ {% if question.score == 0 -%}
+ no-votes
+ {% else -%}
+ some-votes
+ {%- endif -%}">
+ <span class="item-count">{{question.score|humanize_counter}}</span>
+ <div>
+ {% 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>
+ {% if question.is_anonymous %}
+ <span class="anonymous">{{ question.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)}#}
+ {% endif %}
+ </div>
+ </div>
+ <h2><a href="{{ question.get_absolute_url() }}" onmouseover="load_question_body(this, {{question.id}})">{{question.get_question_title()|escape}}</a></h2>
+ {{ tag_list_widget(question.get_tag_names()) }}
+ </div>
+{%- 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) -%}
+ <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 %}
+ };
+ </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(post=None, show_post = None, show_comment = None, comment_order_number = None, user=None, max_comments=None) -%}
+ {% spaceless %}
+ {% 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 comment_order_number > max_comments %}
+ {% set comments = post.get_comments(visitor = user)[:comment_order_number] %}
+ {{ comment_list(comments = comments, user = user) }}
+ {% else %}
+ {% set comments = post.get_comments(visitor = user)[:max_comments] %}
+ {{ comment_list(comments = comments, user = user) }}
+ {% endif %}
+ {% else %}
+ {% set comments = post.get_comments(visitor = user)[:max_comments] %}
+ {{ comment_list(comments = comments, user = user) }}
+ {% endif %}
+ </div>
+ <div class="controls">
+ {% set can_post = user|can_post_comment(post) %}
+ {% if show_post == post and show_comment %}
+ {% if comment_order_number > max_comments %}
+ {{
+ add_or_show_comments_button(
+ post = post,
+ can_post = can_post,
+ max_comments = comment_order_number,
+ widget_id = widget_id
+ )
+ }}
+ {% else %}
+ {{
+ add_or_show_comments_button(
+ post = post,
+ can_post = can_post,
+ max_comments = max_comments,
+ widget_id = widget_id
+ )
+ }}
+ {% endif %}
+ {% else %}
+ {{
+ add_or_show_comments_button(
+ post = post,
+ can_post = can_post,
+ max_comments = max_comments,
+ widget_id = widget_id
+ )
+ }}
+ {% endif %}
+ </div>
+ </div>
+ {% endspaceless %}
+{%- endmacro -%}
+
+{%- macro reversible_sort_button(button_sort_criterium=None, asc_tooltip=None,
+ desc_tooltip=None, label=None, current_sort_method=None) -%}
+{#
+ sort button where descending sort is default
+ and the search method is togglable between ascending and descending
+ buttons are rendered as links with id constructed as
+ "by_" + button_sort_criterium
+ class "on" is added when current_sort_method is one of
+ 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>
+ {% 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>
+ {% endif %}
+ <script type="text/javascript">{# need to pass on text translations to js #}
+ var sortButtonData = sortButtonData || {};
+ sortButtonData["{{key_name}}"] = {
+ label: "{{label}}",
+ asc_tooltip: "{{asc_tooltip}}",
+ desc_tooltip: "{{desc_tooltip}}"
+ };
+ </script>
+{%- endmacro %}
+
+{%- macro checkbox_in_div(checkbox_field, class = 'checkbox') -%}
+ <div{% if class %} class="{{class}}"{% endif %}
+ title="{{checkbox_field.help_text}}">
+ {{ checkbox_field }}
+ {{ checkbox_field.label_tag() }}
+ {{ checkbox_field.errors }}
+ </div>
+{%- endmacro -%}
+
+{%- macro edit_post(
+ post_form,
+ post_type = None,
+ mandatory_tags = None,
+ edit_title = False
+ )
+-%}
+ {% if edit_title %}
+ <div class="form-item">
+ <label for="id_title" ><strong>{{ post_form.title.label_tag() }}:</strong></label> <span class="form-error"></span><br/>
+ {{ post_form.title }} {{ post_form.title.errors }}
+ <div class="title-desc">
+ {{ post_form.title.help_text }}
+ </div>
+ </div>
+ {% endif %}
+ <div id="wmd-button-bar" class="wmd-panel"></div>
+ <div class="form-item">
+ {{ post_form.text }}{# this element is resizable and will be wrapped by js #}
+ <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>
+ {% trans %}(required){% endtrans %}
+ </label>
+ {% endif %}
+ <span class="form-error">{{ post_form.tags.errors }}</span><br/>
+ {{ post_form.tags }}
+ <div class="title-desc">
+ {{ post_form.tags.help_text }}
+ </div>
+ </div>
+ {% endif %}
+ {% if 'summary' in post_form['fields'] %}
+ <div class="form-item">
+ <strong>{{ post_form.summary.label_tag() }}</strong> <br/>
+ {{ post_form.summary }}
+ <div class="title-desc">
+ {{ post_form.summary.help_text }}
+ </div>
+ <div class="form-error" >{{ post_form.summary.errors }}</div>
+ </div>
+ {% endif %}
+ <div class="preview-toggle">
+ <span
+ id="pre-collapse"
+ title="{% trans %}Toggle the real time Markdown editor preview{% endtrans %}"
+ >
+ [{% trans %}hide preview{% endtrans %}]
+ </span>
+ </div>
+ <div id="previewer" class="wmd-preview"></div>
+{%- 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 %}"
+ {% 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 %}"
+ {% elif user.seen_response_count > 0 %}
+ src="{{ "/images/mail-envelope-empty.png"|media }}"
+ title="{% trans %}no new responses yet{% endtrans %}"
+ {% endif %}
+ />
+ </a>
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro moderation_items_link(user, moderation_items) -%}
+ {% if moderation_items %}
+ <a id="ab-responses"
+ href="{{user.get_absolute_url()}}?sort=inbox&section=flags"
+ >
+ {% if moderation_items['new_count'] > 0 %}
+ <img src="{{'/images/dialog-warning.png'|media}}"
+ {% if moderation_items['seen_count'] > 0 %}
+ alt="{% trans new=moderation_items['new_count'], seen=moderation_items['seen_count']%}{{new}} new flagged posts and {{seen}} previous{% endtrans %}"
+ title="{% trans new=moderation_items['new_count'], seen=moderation_items['seen_count']%}{{new}} new flagged posts and {{seen}} previous{% endtrans %}"
+ {% else %}
+ alt="{% trans new=moderation_items['new_count'] %}{{new}} new flagged posts{% endtrans %}"
+ title="{% trans new=moderation_items['new_count'] %}{{new}} new flagged posts{% endtrans %}"
+ {% endif %}
+ />
+ {% elif moderation_items['seen_count'] > 0 %}
+ <img src={{'/images/dialog-warning-off.png'|media}}
+ alt="{% trans seen=moderation_items['seen_count'] %}{{seen}} flagged posts{% endtrans %}"
+ title="{% trans seen=moderation_items['seen_count'] %}{{seen}} flagged posts{% endtrans %}"
+ />
+ {% endif %}
+ </a>
+ {% endif %}
+{%- endmacro -%}
+
+{%- macro tag_autocomplete_js(id = '#id_tags') -%}
+ var tagAc = new AutoCompleter({
+ url: '{% url "get_tag_list" %}',
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: true,
+ maxCacheLength: 100,
+ delay: 10
+ });
+ tagAc.decorate($("{{ id }}"));
+{%- endmacro -%}
diff --git a/askbot/skins/old/templates/main_page.html b/askbot/skins/old/templates/main_page.html
new file mode 100644
index 00000000..d0cddc68
--- /dev/null
+++ b/askbot/skins/old/templates/main_page.html
@@ -0,0 +1,24 @@
+{% extends "two_column_body.html" %}
+{#
+ this template is split into several
+ blocks that are included here
+ the blocks are within directory templates/main_page
+ relative to the skin directory
+
+ there is no html markup in this file
+#}
+<!-- questions.html -->
+{% block title %}{% spaceless %}{% trans %}Questions{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+ {% include "main_page/tab_bar.html" %}
+ {% include "main_page/headline.html" %}
+ {% include "main_page/content.html" %}
+ {% include "main_page/paginator.html" %}
+{% endblock %}
+{% block sidebar %}
+ {% include "main_page/sidebar.html" %}
+{% endblock %}
+{% block endjs %}
+ {% include "main_page/javascript.html" %}
+{% endblock %}
+<!-- end questions.html -->
diff --git a/askbot/skins/old/templates/main_page/content.html b/askbot/skins/old/templates/main_page/content.html
new file mode 100644
index 00000000..72128cdc
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/content.html
@@ -0,0 +1,17 @@
+{% import "macros.html" as macros %}
+<div id="question-list">
+{% 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 %}
+ {% include "main_page/nothing_found.html" %}
+{% else %}
+ <p class="evenMore" style="padding-left:9px">
+ {% trans %}Did not find what you were looking for?{% endtrans %}
+ <a href="{% url ask %}">{% trans %}Please, post your question!{% endtrans %}</a>
+ </p>
+{% endif %}
+</div>
diff --git a/askbot/skins/old/templates/main_page/headline.html b/askbot/skins/old/templates/main_page/headline.html
new file mode 100644
index 00000000..71d36fa5
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/headline.html
@@ -0,0 +1,52 @@
+{% import "macros.html" as macros %}
+{% if questions_count > 0 %}
+ <div style="clear:both">
+ <p class="rss">
+ (<a
+ {% if feed_url %}
+ href="{{settings.APP_URL}}{{feed_url}}"
+ {% else %}
+ href="{{settings.APP_URL}}/feeds/rss/"
+ {% endif %}
+ title="{% trans %}subscribe to the questions feed{% endtrans %}"
+ >{% trans %}rss feed{% endtrans %}</a>)
+ </p>
+ <h1 id="question-count" class="search-result-summary">
+ {% if search_tags %}
+ {% trans cnt=questions_count, q_num=questions_count|intcomma %}{{q_num}} question, tagged{% pluralize %}{{q_num}} questions, tagged{% endtrans %}
+ {% else %}
+ {% trans cnt=questions_count, q_num=questions_count|intcomma %}{{q_num}} question{% pluralize %}{{q_num}} questions{% endtrans %}
+ {% endif %}
+ {% if author_name %}
+ {% trans %}with {{author_name}}'s contributions{% endtrans %}
+ {% endif %}
+ </h1>
+ {{ macros.tag_list_widget(
+ search_tags,
+ id = 'search-tags',
+ deletable = True,
+ make_links = False
+ )
+ }}
+ {% if author_name or search_tags or query %}
+ <p class="search-tips">{% trans %}Search tips:{% endtrans %}
+ {% if reset_method_count > 1 %}
+ {% if author_name %}
+ <a href="{% url questions %}?reset_author=true">{% 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>
+ {% endif %}
+ {% if query %}{% trans %} or {% endtrans %}
+ <a href="{% url questions %}?start_over=true">{% trans %}start over{% endtrans %}</a>
+ {% endif %}
+ {% else %}
+ <a href="{% url questions %}?start_over=true">{% 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">{% trans %}Search tip:{% endtrans %} {% trans %}add tags and a query to focus your search{% endtrans %}</p>
+ {% endif %}
+ </div>
+{% endif %}
diff --git a/askbot/skins/old/templates/main_page/javascript.html b/askbot/skins/old/templates/main_page/javascript.html
new file mode 100644
index 00000000..14dfe3cd
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/javascript.html
@@ -0,0 +1,30 @@
+<script type="text/javascript">
+ var sortMethod = '{{sort}}';
+ var showSortByRelevance = {% if show_sort_by_relevance %}true{% else %}false{% endif %};
+ var minSearchWordLength = {{settings.MIN_SEARCH_WORD_LENGTH}};
+ $(document).ready(function(){
+ /*var on_tab = '#nav_questions';
+ $(on_tab).attr('className','on');*/
+ liveSearch().init('main_page');
+ Hilite.exact = false;
+ Hilite.elementid = "question-list";
+ Hilite.debug_referrer = location.href;
+ {% if update_avatar_data == True %}
+ var today = new Date();{#add timestamp to prevent browser caching #}
+ $.getJSON('{% url user_update_has_custom_avatar %}?t=' + today.getTime());
+ {% endif %}
+ });
+ 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']['set_tag_filter_strategy'] = '{% url "set_tag_filter_strategy" %}';
+ askbot['urls']['questions'] = '{% url "questions" %}';
+ askbot['urls']['question_url_template'] = scriptUrl + '{% trans %}question/{% endtrans %}{{ "{{QuestionID}}/" }}';
+ askbot['urls']['user_url_template'] = scriptUrl + '{% trans %}users/{% endtrans %}{{ "{{user_id}}" }}/{{ "{{slug}}" }}/';
+ askbot['messages']['name_of_anonymous_user'] = '{{ name_of_anonymous_user }}';
+</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>
diff --git a/askbot/skins/old/templates/main_page/nothing_found.html b/askbot/skins/old/templates/main_page/nothing_found.html
new file mode 100644
index 00000000..50f2f340
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/nothing_found.html
@@ -0,0 +1,31 @@
+{# todo: add tips to widen selection #}
+<p class="evenMore" style="padding-top:30px;text-align:center;">
+{% if scope == "unanswered" %}
+ {% trans %}There are no unanswered questions here{% endtrans %}
+{% endif %}
+{% if scope == "favorite" %}
+ {% trans %}No questions here. {% endtrans %}
+ {% trans %}Please star (bookmark) some questions or follow some users.{% endtrans %}
+{% endif %}
+</p>
+{% if query or search_tags or author_name %}
+<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>
+ {% 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>
+ {% endif %}
+ {% if query %}{% trans %} or {% endtrans %}
+ <a href="{% url questions %}?start_over=true">{% trans %}starting over{% endtrans %}</a>
+ {% endif %}
+ {% else %}
+ <a href="{% url questions %}?start_over=true">{% trans %}starting over{% endtrans %}</a>
+ {% endif %}
+</p>
+{% endif %}
+<p class="evenMore" style="text-align:center">
+<a href="{% url ask %}">{% trans %}Please always feel free to ask your question!{% endtrans %}</a>
+</p>
diff --git a/askbot/skins/old/templates/main_page/paginator.html b/askbot/skins/old/templates/main_page/paginator.html
new file mode 100644
index 00000000..4a77060f
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/paginator.html
@@ -0,0 +1,7 @@
+{% import "macros.html" as macros %}
+{% if questions_count > 10 %}{# todo: remove magic number #}
+ <div id="pager" class="pager">
+ {{ macros.paginator(context|setup_paginator, position='left') }}
+ {{ macros.pagesize_switch(context, position='right') }}
+ </div>
+{% endif %}
diff --git a/askbot/skins/old/templates/main_page/sidebar.html b/askbot/skins/old/templates/main_page/sidebar.html
new file mode 100644
index 00000000..6abc0492
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/sidebar.html
@@ -0,0 +1,46 @@
+{% import "macros.html" as macros %}
+
+{{ settings.SIDEBAR_MAIN_HEADER }}
+
+{% if contributors and settings.SIDEBAR_MAIN_SHOW_AVATARS %}
+ {% cache 600 "contributors" contributors search_tags scope sort query context.page context.page_size language_code %}
+ <div id="contrib-users" class="boxC">
+ <h2>{% trans %}Contributors{% endtrans %}</h2>
+ {% spaceless %}
+ {% for person in contributors %}
+ {{ macros.gravatar(person,48) }}
+ {% endfor %}
+ {% endspaceless %}
+ </div>
+ {% endcache %}
+{% endif %}
+
+{% if request.user.is_authenticated() and settings.SIDEBAR_MAIN_SHOW_TAG_SELECTOR %}
+ {% include "blocks/tag_selector.html" %}
+{% endif %}
+
+{% if tags and settings.SIDEBAR_MAIN_SHOW_TAGS %}
+ {% cache 0 "tags" tags search_tags scope sort query context.page context.page_size language_code %}
+ <div class="boxC">
+ <h2>{% trans %}Related tags{% endtrans %}</h2>
+ {% if tag_list_type == 'list' %}
+ <ul id="related-tags" class="tags">
+ {% for tag in tags %}
+ <li>
+ {{ macros.tag_widget(
+ tag.name,
+ html_tag = 'div',
+ extra_content = '<span class="tag-number">&#215; ' ~
+ tag.local_used_count|intcomma ~ '</span>'
+ )}}
+ </li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }}
+ {% endif %}
+ </div>
+ {% endcache %}
+{% endif %}
+
+{{ settings.SIDEBAR_MAIN_FOOTER }}
diff --git a/askbot/skins/old/templates/main_page/tab_bar.html b/askbot/skins/old/templates/main_page/tab_bar.html
new file mode 100644
index 00000000..1b27ab3a
--- /dev/null
+++ b/askbot/skins/old/templates/main_page/tab_bar.html
@@ -0,0 +1,86 @@
+{% import "macros.html" as macros %}
+{% cache 600 "scope_sort_tabs" search_tags request.user scope sort query context.page context.page_size language_code %}
+<div class="tabBar">
+ <div class="tabsC">
+ <span class="label">{% trans %}In:{% endtrans %}</span>
+ <a id="all"
+ class="{% if scope == 'all' %}on{% else %}off{% endif %}"
+ href="?scope=all"
+ title="{% trans %}see all questions{% endtrans %}"
+ ><span>{% trans %}all{% endtrans %}</span></a>
+ <a id="unanswered"
+ class="{% if scope == 'unanswered' %}on{% else %}off{% endif %}"
+ href="?scope=unanswered&amp;sort=answers-asc"
+ title="{% trans %}see unanswered questions{% endtrans %}"
+ ><span>{% trans %}unanswered{% endtrans %}</span></a>
+ {% if request.user.is_authenticated() %}
+ <a id="favorite"
+ class="{% if scope == 'favorite' %}on{% else %}off{% endif %}"
+ href="?scope=favorite"
+ title="{% trans %}see your followed questions{% endtrans %}"
+ ><span>{% trans %}followed{% endtrans %}</span></a>
+ {% endif %}
+ </div>
+ <div id="sort_tabs" class="tabsA">
+ <span class="label">{% trans %}Sort by:{% endtrans %}</span>
+ {% if show_sort_by_relevance %}
+ {% set asc_relevance_tooltip = gettext('most relevant questions') %}
+ {% set desc_relevance_tooltip = gettext('click to see most relevant questions') %}
+ {% set relevance_label = gettext('relevance') %}
+ {% if query %}
+ <a id="by_relevance"
+ {% if sort == "relevance-desc" %}
+ href="?sort=relevance-desc"
+ class="on"
+ title="{{asc_relevance_tooltip}}"><span>{{relevance_label}} &#9660;</span>
+ {% else %}
+ href="?sort=relevance-desc"
+ class="off"
+ title="{{desc_relevance_tooltip}}"><span>{{relevance_label}}</span>
+ {% endif %}
+ </a>
+ {% endif %}
+ <script type="text/javascript">
+ var sortButtonData = sortButtonData || {};
+ sortButtonData['relevance'] = {
+ asc_tooltip: "{{asc_relevance_tooltip}}",
+ desc_tooltip: "{{desc_relevance_tooltip}}",
+ label: "{{relevance_label}}"
+ };
+ </script>
+ {% endif %}
+ {{macros.reversible_sort_button(
+ button_sort_criterium = 'age',
+ 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
+ )
+ }}
+ {{macros.reversible_sort_button(
+ button_sort_criterium = 'activity',
+ 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
+ )
+ }}
+ {{macros.reversible_sort_button(
+ button_sort_criterium = 'answers',
+ 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
+ )
+ }}
+ {{macros.reversible_sort_button(
+ button_sort_criterium = 'votes',
+ 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
+ )
+ }}
+ </div>
+</div>
+{% endcache %}
diff --git a/askbot/skins/default/templates/one_column_body.html b/askbot/skins/old/templates/one_column_body.html
index e97de505..e97de505 100644
--- a/askbot/skins/default/templates/one_column_body.html
+++ b/askbot/skins/old/templates/one_column_body.html
diff --git a/askbot/skins/old/templates/privacy.html b/askbot/skins/old/templates/privacy.html
new file mode 100644
index 00000000..61f4d945
--- /dev/null
+++ b/askbot/skins/old/templates/privacy.html
@@ -0,0 +1,8 @@
+{% extends "one_column_body.html" %}
+<!-- privacy.html -->
+{% block title %}{% spaceless %}{% trans %}Privacy policy{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>{% trans %}Privacy policy{% endtrans %}</h1>
+{{settings.FORUM_PRIVACY}}
+{% endblock %}
+<!-- end privacy.html -->
diff --git a/askbot/skins/old/templates/question.html b/askbot/skins/old/templates/question.html
new file mode 100644
index 00000000..06cd1332
--- /dev/null
+++ b/askbot/skins/old/templates/question.html
@@ -0,0 +1,553 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- question.html -->
+{% block title %}{% spaceless %}{{ question.get_question_title() }}{% endspaceless %}{% endblock %}
+{% block meta_description %}
+ <meta name="description" content="{{question.summary|striptags|escape}}" />
+{% endblock %}
+{% block keywords %}{{question.tagname_meta_generator()}}{% endblock %}
+{% block forestyle %}
+ <link rel="canonical" href="{{settings.APP_URL}}{{question.get_absolute_url()}}" />
+ <link rel="stylesheet" type="text/css" href="{{'/js/wmd/wmd.css'|media}}" />
+{% endblock %}
+{% block content %}
+<h1><a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a></h1>
+<table style="width:100%;" id="question-table" {% if question.deleted %}class="deleted"{%endif%}>
+ <tr>
+ <td style="width:30px;vertical-align:top">
+ <div class="vote-buttons">
+ {% if question_vote %}
+ <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote"
+ {% if question_vote.is_upvote() %}
+ src="{{'/images/vote-arrow-up-on.png'|media}}"
+ {% else %}
+ src="{{'/images/vote-arrow-up.png'|media}}"
+ {% endif %}
+ alt="{% trans %}i like this post (click again to cancel){% endtrans %}"
+ title="{% trans %}i like this post (click again to cancel){% endtrans %}" />
+ <div id="question-vote-number-{{ question.id }}" class="vote-number"
+ title="{% trans %}current number of votes{% endtrans %}">
+ {{ question.score }}
+ </div>
+ <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote"
+ {% if question_vote.is_downvote() %}
+ src="{{'/images/vote-arrow-down-on.png'|media}}"
+ {% else %}
+ src="{{'/images/vote-arrow-down.png'|media}}"
+ {% endif %}
+ alt="{% trans %}i dont like this post (click again to cancel){% endtrans %}"
+ title="{% trans %}i dont like this post (click again to cancel){% endtrans %}" />
+ {% else %}
+ <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote"
+ alt="{% trans %}i like this post (click again to cancel){% endtrans %}"
+ src="{{'/images/vote-arrow-up.png'|media}}"
+ title="{% trans %}i like this post (click again to cancel){% endtrans %}" />
+ <div id="question-vote-number-{{ question.id }}" class="vote-number"
+ title="{% trans %}current number of votes{% endtrans %}">
+ {{ question.score }}
+ </div>
+ <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote"
+ src="{{'/images/vote-arrow-down.png'|media}}"
+ alt="{% trans %}i dont like this post (click again to cancel){% endtrans %}"
+ title="{% trans %}i dont like this post (click again to cancel){% endtrans %}" />
+ {% endif %}
+
+ {% if settings.ENABLE_SHARING_TWITTER %}{{ macros.share(site = 'twitter', icon = True) }}{% endif %}
+ {% if settings.ENABLE_SHARING_FACEBOOK %}{{ macros.share(site = 'facebook', icon = True) }}{% endif %}
+ {% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', icon = True) }}{% endif %}
+ {% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', icon = True) }}{% endif %}
+ {% if settings.ENABLE_SHARING_GOOGLE %}<g:plusone size="small" count="false"></g:plusone>{% endif %}
+ </div>
+ </td>
+ <td>
+ <div class="question-body">
+ {{question.html}}
+ </div>
+ <ul id="question-tags" class="post-tags tags">
+ {% for tag in question.get_tag_names() %}
+ {{ macros.tag_widget(
+ tag,
+ css_class = 'post-tag',
+ html_tag = 'li'
+ )
+ }}
+ {% endfor %}
+ </ul>
+ <div id="question-controls" class="post-controls">
+ {% set pipe=joiner('<span class="sep">|</span>') %}
+ {% if request.user|can_edit_post(question) %}{{ pipe() }}
+ <a href="{% url edit_question question.id %}">{% trans %}edit{% endtrans %}</a>
+ {% endif %}
+ {% if request.user|can_retag_question(question) %}{{ pipe() }}
+ <a id="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 href="{% url reopen question.id %}">{% trans %}reopen{% endtrans %}</a>
+ {% endif %}
+ {% else %}
+ {% if request.user|can_close_question(question) %}{{ pipe() }}
+ <a href="{% url close question.id %}">{% trans %}close{% endtrans %}</a>
+ {% endif %}
+ {% 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>{% trans %}flag offensive{% endtrans %}</a>
+ {% if request.user|can_see_offensive_flags(question) %}
+ <span class="darkred">{% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %}</span>
+ {% endif %}
+ </span>
+ {% endif %}
+ {% if request.user|can_delete_post(question) %}{{ pipe() }}
+ <a id="question-delete-link-{{question.id}}">{% if question.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %}</a>
+ {% endif %}
+ </div>
+ <div class="post-update-info-container">
+ {{
+ macros.post_contributor_info(
+ question,
+ "original_author",
+ question.wiki,
+ settings.MIN_REP_TO_EDIT_WIKI
+ )
+ }}
+ {{
+ macros.post_contributor_info(
+ question,
+ "last_updater",
+ question.wiki,
+ settings.MIN_REP_TO_EDIT_WIKI,
+ )
+ }}
+ </div>
+ {{
+ macros.post_comments_widget(
+ post = question,
+ show_post = show_post,
+ show_comment = show_comment,
+ comment_order_number = comment_order_number,
+ user = request.user,
+ max_comments = settings.MAX_COMMENTS_TO_SHOW
+ )
+ }}
+ <!--/div-->
+ </td>
+ </tr>
+</table>
+{% if question.closed %}
+<div class="question-status" style="margin-bottom:15px">
+<h3>{% trans close_reason=question.get_close_reason_display() %}The question has been closed for the following reason "{{ close_reason }}" by{% endtrans %}
+<a href="{{ question.closed_by.get_profile_url() }}">{{ question.closed_by.username }}</a>
+{% trans closed_at=question.closed_at %}close date {{closed_at}}{% endtrans %}</h3>
+</div>
+{% endif %}
+{% if answers %}
+ <div class="tabBar">
+ <h2 id="sort-top">
+ {% trans counter=answers|length %}
+ {{counter}} Answer:
+ {% pluralize %}
+ {{counter}} Answers:
+ {% endtrans %}
+ </h2>
+ <div class="tabsA">
+ <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>
+ </div>
+ </div>
+ {{ macros.paginator(paginator_context) }}
+
+ {% for answer in answers %}
+ <a name="{{ answer.id }}"></a>
+ <div id="answer-container-{{ answer.id }}" class="answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id==question.author_id %} answered-by-owner{% endif %} {% if answer.deleted %}deleted{% endif %}">
+ <table style="width:100%;" class="answer-table">
+ <tr>
+ <td style="width:30px;vertical-align:top">
+ <div class="vote-buttons">
+ <img id="answer-img-upvote-{{ answer.id }}" class="answer-img-upvote"
+ {% if user_answer_votes[answer.id] == 1 %}
+ src="{{'/images/vote-arrow-up-on.png'|media}}"
+ {% else %}
+ src="{{'/images/vote-arrow-up.png'|media}}"
+ {% endif %}
+ alt="{% trans %}i like this answer (click again to cancel){% endtrans %}"
+ title="{% trans %}i like this answer (click again to cancel){% endtrans %}"/>
+ <div id="answer-vote-number-{{ answer.id }}" class="vote-number" title="{% trans %}current number of votes{% endtrans %}">
+ {{ answer.score }}
+ </div>
+ <img id="answer-img-downvote-{{ answer.id }}" class="answer-img-downvote"
+ {% if user_answer_votes[answer.id] == -1 %}
+ src="{{'/images/vote-arrow-down-on.png'|media}}"
+ {% else %}
+ src="{{'/images/vote-arrow-down.png'|media}}"
+ {% endif %}
+ alt="{% trans %}i dont like this answer (click again to cancel){% endtrans %}"
+ title="{% trans %}i dont like this answer (click again to cancel){% endtrans %}" />
+ {% if request.user == question.author %}
+ <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 favorite (click again to undo){% endtrans %}"
+ title="{% trans %}mark this answer as favorite (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}}"
+ {% else %}
+ src="{{'/images/vote-accepted.png'|media}}"
+ {% 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>
+ </td>
+ <td>
+ <div class="item-right">
+ <div class="answer-body">
+ {{ answer.html }}
+ </div>
+ <div class="answer-controls post-controls">
+ {% set pipe=joiner('<span class="sep">|</span>') %}
+ <span class="linksopt">{{ pipe() }}
+ <a
+ href="{{ answer.get_absolute_url() }}"
+ title="{% trans %}answer permanent link{% endtrans %}">
+ {% trans %}permanent link{% endtrans %}
+ </a>
+ </span>
+ {% if request.user|can_edit_post(answer) %}{{ pipe() }}
+ <span class="action-link"><a href="{% url edit_answer answer.id %}">{% trans %}edit{% 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>{% trans %}flag offensive{% endtrans %}</a>
+ {% 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>
+ {% endif %}
+ {% if request.user|can_delete_post(answer) %}{{ pipe() }}
+ {% spaceless %}
+ <span class="action-link">
+ <a 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 %}
+ </div>
+ <div class="post-update-info-container">
+ {{
+ macros.post_contributor_info(
+ answer,
+ "original_author",
+ answer.wiki,
+ settings.MIN_REP_TO_EDIT_WIKI
+ )
+ }}
+ {{
+ macros.post_contributor_info(
+ answer,
+ "last_updater",
+ answer.wiki,
+ settings.MIN_REP_TO_EDIT_WIKI
+ )
+ }}
+ </div>
+ {{
+ macros.post_comments_widget(
+ post = answer,
+ show_post = show_post,
+ show_comment = show_comment,
+ comment_order_number = comment_order_number,
+ user = request.user,
+ max_comments = settings.MAX_COMMENTS_TO_SHOW
+ )
+ }}
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ {% endfor %}
+ {{ macros.paginator(paginator_context) }}
+{% else %}
+ {% set question_url=settings.APP_URL+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 %}
+ {% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', site_label = 'LinkedIn') }},{% endif %}
+ {% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', site_label = 'Identi.ca') }},{% endif %}
+ {%- if settings.ENABLE_SHARING_TWITTER or settings.ENABLE_SHARING_FACEBOOK or settings.ENABLE_SHARING_LINKEDIN or settings.ENABLE_SHARING_IDENTICA -%}
+ {% trans %} or{% endtrans %}
+ {% endif %}
+ <a href="mailto:?subject={{ settings.APP_SHORT_NAME|urlencode }}&amp;body={{ question_url }}">{% trans %}email{% endtrans %}</a>.
+ </h2>
+{% endif %}
+<form id="fmanswer" action="{% url answer question.id %}" method="post">{% csrf_token %}
+ {% if request.user.is_authenticated() %}
+ <p style="padding-left:3px">
+ {{ 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 %}
+ </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 style="padding-left:3px">
+ {{ answer.email_notify }}
+ <label>{% trans %}once you sign in you will be able to subscribe for any updates here{% endtrans %}</label>
+ </p>
+ {% endif %}
+ <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>
+ {% endif %}
+ {% else %}
+ {% if not question.closed %}
+ <div style="padding:10px 0 0 0;">
+ {% spaceless %}
+ <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>
+ {% else %}
+ <p class="message">
+ {% if request.user==question.author %}
+ {% trans %}answer your own question only to give an answer{% endtrans %}
+ {% else %}
+ {% trans %}please only give an answer, no discussions{% 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"/>
+ {% if settings.WIKI_ON %}
+ {{ macros.checkbox_in_div(answer.wiki) }}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ </form>
+{% endblock %}
+
+{% block sidebar %}
+
+{{ settings.SIDEBAR_QUESTION_HEADER }}
+<div class="boxC vote-buttons">
+ <h2 style="font-size: 22px;margin-top: 11px; text-align: left;">{% trans %}Question tools{% endtrans %}</h2>
+ {% if favorited %}
+ <a class="button followed"
+ alt="{% trans %}click to unfollow this question{% endtrans %}">
+ <div>{% trans %}Following{% endtrans %}</div>
+ <div class='unfollow'>{% trans %}Unfollow{% endtrans %}</div>
+ </a>
+ {% else %}
+ <a class="button follow"
+ alt="{% trans %}click to follow this question{% endtrans %}">
+ {%trans %}Follow{%endtrans%}
+ </a>
+ {% endif %}
+ <div class="clearfix"></div>
+ <div id="favorite-number" class="favorite-number{% if favorited %} my-favorite-number{% endif %}">
+ {% set follower_count = question.favourite_count %}
+ {% if follower_count > 0 %}
+ {% trans count=follower_count %}{{count}} follower{% pluralize %}{{count}} followers{% endtrans %}
+ {% endif %}
+ </div>
+<div class="notify-sidebar">
+ {%if request.user.is_authenticated() %}
+ <input type="checkbox" id="question-subscribe-sidebar"/>
+ <label for="question-subscribe-sidebar">{% trans %}email the updates{% endtrans %}</label>
+ {%else%}
+ <input type="checkbox" id="question-subscribe-sidebar"/>
+ <label for="question-subscribe-sidebar">{% trans %}<strong>Here</strong> (once you log in) you will be able to sign up for the periodic email updates about this question.{% endtrans %}</label>
+ {%endif%}
+ </div>
+</div>
+{% cache 0 "questions_tags" questions_tags question.id language_code %}
+{% if settings.SIDEBAR_QUESTION_SHOW_TAGS %}
+ <div class="boxC">
+ <div class="clearfix"></div>
+ <h2>
+ {% trans %}Question tags{% endtrans %}:
+ </h2>
+ <ul id="related-tags" class="tags">
+ {% for tag in tags %}
+ <li>
+ {{ macros.tag_widget(
+ tag,
+ html_tag = 'div',
+ url_params = 'start_over=true',
+ extra_content = '<span class="tag-number">&#215; ' ~
+ tag.used_count|intcomma ~ '</span>'
+ )
+ }}
+ </li>
+ {% endfor %}
+ </ul>
+ </div>
+{% endif %}
+
+{% if settings.SIDEBAR_QUESTION_SHOW_META %}
+<div class="boxC">
+ <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>
+ </p>
+ <p>
+ {% trans %}question was seen{% endtrans %}: <strong>{{ question.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>
+ </p>
+</div>
+{% endif %}
+{% endcache %}
+
+{% if similar_questions.data and settings.SIDEBAR_QUESTION_SHOW_RELATED %}
+ {#% cache 1800 "related_questions" related_questions question.id language_code %#}
+ <div class="boxC">
+ <h2>{% trans %}Related questions{% endtrans %}</h2>
+ <div class="questions-related">
+ {% for question in similar_questions.data() %}
+ <p>
+ <a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a>
+ </p>
+ {% endfor %}
+ </div>
+ </div>
+ {#% endcache %#}
+{% endif %}
+
+{{ settings.SIDEBAR_QUESTION_FOOTER }}
+
+{% endblock %}
+{% block endjs %}
+ {% 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 %}';
+ askbot['urls']['question_url_template'] = scriptUrl + '{% trans %}question/{% endtrans %}{{ "{{QuestionID}}/{{questionSlug}}" }}';{# yes it needs to be that whacky #}
+ askbot['urls']['user_signin'] = '{{ settings.LOGIN_URL }}';
+ askbot['urls']['vote_url_template'] = scriptUrl + '{% trans %}questions/{% endtrans %}{{ "{{QuestionID}}/" }}{% trans %}vote/{% endtrans %}';
+ 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/jquery.validate.min.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
+ <script type="text/javascript">
+ // define reputation needs for comments
+ var repNeededForComments = 50;
+ $().ready(function(){
+ {% if request.user.is_authenticated() %}
+ if ($('#question-subscribe-updates')[0].checked){
+ $('#question-subscribe-sidebar').attr({'checked': 'checked'});
+ }
+ {%endif%}
+ $("#nav_questions").attr('className',"on");
+ 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 }}');
+
+ {% if not question.closed and request.user.is_authenticated %}initEditor();{% endif %}
+
+ lanai.highlightSyntax();
+ $('#btLogin').bind('click', function(){window.location.href='{{ settings.LOGIN_URL }}'; } )
+ if (window.location.hash === 'fmanswer'){
+ $('#fmanswer textarea').focus();
+ }
+ {% if settings.ENABLE_SHARING_GOOGLE %}$.getScript("http://apis.google.com/js/plusone.js"){% endif %}
+ });
+
+ function initEditor(){
+ $('#editor').TextAreaResizer();
+ //highlight code synctax when editor has new text
+ $("#editor").typeWatch({highlight: false, wait: 3000,
+ captureLength: 5, callback: lanai.highlightSyntax});
+
+ var display = true;
+ var txt = "[{% trans %}hide preview{% endtrans %}]";
+ $('#pre-collapse').text(txt);
+ $('#pre-collapse').bind('click', function(){
+ txt = display ? "[{% trans %}show preview{% endtrans %}]" : "[{% trans %}hide preview{% endtrans %}]";
+ display = !display;
+ $('#previewer').toggle();
+ $('#pre-collapse').text(txt);
+ });
+ setupFormValidation($("#fmanswer"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
+ }
+ </script>
+ {% include "blocks/editor_data.html" %}
+{% endblock %}
diff --git a/askbot/skins/old/templates/question_edit.html b/askbot/skins/old/templates/question_edit.html
new file mode 100644
index 00000000..feee2521
--- /dev/null
+++ b/askbot/skins/old/templates/question_edit.html
@@ -0,0 +1,97 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- question_edit.html -->
+{% block title %}{% spaceless %}{% trans %}Edit question{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle %}
+ <link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
+{% endblock %}
+{% block content %}
+<h1>{% trans %}Edit question{% endtrans %} [<a href="{{ question.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]</h1>
+<form id="fmedit" action="{% url edit_question question.id %}" method="post" >{% csrf_token %}
+
+ {% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul() }}{% endif %}
+ <div style="vertical-align:middle">
+ {{ revision_form.revision }} <input type="submit" style="display:none"
+ id="select_revision" name="select_revision"
+ value="{% trans %}select revision{% endtrans %}">
+ </div>
+ {{
+ macros.edit_post(
+ form,
+ post_type='question',
+ edit_title=True,
+ mandatory_tags = mandatory_tags
+ )
+ }}
+ <div class="after-editor">
+ <input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
+ <input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
+ <div class="question-options">
+ {% if settings.WIKI_ON and question.wiki == False %}
+ {{ macros.checkbox_in_div(form.wiki) }}
+ {% endif %}
+ {% if form.can_stay_anonymous() %}
+ {{ macros.checkbox_in_div(form.reveal_identity) }}
+ {% endif %}
+ </div>
+ </div>
+</form>
+{% endblock %}
+
+{% block sidebar %}
+{% include "blocks/question_edit_tips.html" %}
+{% endblock %}
+
+{% block endjs %}
+ {% include "blocks/editor_data.html" %}
+ <script type='text/javascript' src='{{"/js/editor.js"|media }}'></script>
+ {% if mandatory_tags %}
+ {% include "blocks/mandatory_tags_js.html" %}
+ {% endif %}
+ <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' src='{{"/js/wmd/showdown.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/wmd/wmd.js"|media}}'></script>
+ <script type="text/javascript">
+ {% if settings.ENABLE_MATHJAX or settings.MARKUP_CODE_FRIENDLY %}
+ var codeFriendlyMarkdown = true;
+ {% else %}
+ var codeFriendlyMarkdown = false;
+ {% endif %}
+ //todo move javascript out
+ $().ready(function(){
+ $("#nav_questions").attr('className',"on");
+ $('#editor').TextAreaResizer();
+
+ //highlight code synctax when editor has new text
+ $("#editor").typeWatch({highlight: false, wait: 3000,
+ captureLength: 5, callback: lanai.highlightSyntax});
+
+ //toggle preview of editor
+ var display = true;
+ var txt = "[{% trans %}hide preview{% endtrans %}]";
+ $('#pre-collapse').text(txt);
+ $('#pre-collapse').bind('click', function(){
+ txt = display ? "[{% trans %}show preview{% endtrans %}]" : "[{% trans %}hide preview{% endtrans %}]";
+ display = !display;
+ $('#previewer').toggle();
+ $('#pre-collapse').text(txt);
+ });
+
+ {{ macros.tag_autocomplete_js(id = '#id_tags') }}
+
+ setupFormValidation(
+ $("#fmedit"),
+ CPValidator.getQuestionFormRules(),
+ CPValidator.getQuestionFormMessages()
+ );
+
+ $('#id_revision').unbind().change(function(){
+ $("#select_revision").click();
+ });
+ lanai.highlightSyntax();
+
+ });
+ </script>
+{% endblock %}
+<!-- end question_edit.html -->
diff --git a/askbot/skins/old/templates/question_retag.html b/askbot/skins/old/templates/question_retag.html
new file mode 100644
index 00000000..883dc3aa
--- /dev/null
+++ b/askbot/skins/old/templates/question_retag.html
@@ -0,0 +1,68 @@
+{% extends "two_column_body.html" %}
+<!-- question_retag.html -->
+{% block title %}{% spaceless %}{% trans %}Change tags{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>{% trans %}Change tags{% 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() }}
+ </h2>
+ <div id="description" class="edit-content-html">
+ {{ question.html }}
+ </div>
+ <div class="form-item">
+ <strong>{{ form.tags.label_tag() }}:</strong> <span class="form-error"></span><br/>
+ {{ form.tags }} {{ form.tags.errors }}
+ <div class="title-desc">
+ {{ form.tags.help_text }}
+ </div>
+ </div>
+ <div class="error" ></div>
+ <input type="submit" value="{% trans %}Retag{% endtrans %}" class="submit" />&nbsp;
+ <input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
+</form>
+{% endblock %}
+
+{% block sidebar %}
+<div class="boxC">
+ <h2>{% trans %}Why use and modify tags?{% endtrans %}</h2>
+ <ul>
+ <li>{% trans %}Tags help to keep the content better organized and searchable{% endtrans %}</li>
+ <li>
+ {% trans %}tag editors receive special awards from the community{% endtrans %}
+ </li>
+ </ul>
+ <p class='info-box-follow-up-links'>
+ <a href="{% url faq %}">faq »</a>
+ </p>
+</div>
+{% endblock %}
+{% block endjs %}
+ <script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
+ <script type="text/javascript">
+ $().ready(function(){
+ $("#nav_questions").attr('className',"on");
+ {% import "macros.html" as macros %}
+ {{ macros.tag_autocomplete_js(id = '#id_tags') }}
+ $("#fmretag").validate({
+ rules: {
+ tags: {
+ required: true,
+ maxength: 105
+ }
+ },
+ messages: {
+ tags: {
+ required: "{% trans %}tags are required{% endtrans %}",
+ maxlength: "{% trans %}up to 5 tags, less than 20 characters each{% endtrans %}"
+ }
+ }
+
+ });
+ lanai.highlightSyntax();
+ });
+ </script>
+{% endblock %}
+<!-- end question_retag.html -->
diff --git a/askbot/skins/old/templates/reopen.html b/askbot/skins/old/templates/reopen.html
new file mode 100644
index 00000000..d68e8bdc
--- /dev/null
+++ b/askbot/skins/old/templates/reopen.html
@@ -0,0 +1,38 @@
+{% extends "two_column_body.html" %}
+<!-- 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>
+ </a>
+</p>
+<p>{% trans %}This question has been closed by
+ <a href="{{closed_by_profile_url}}">{{closed_by_username}}</a>
+{% endtrans %}
+</p>
+<p>
+ {% trans %}Close reason:{% endtrans %} "<strong>{{question.get_close_reason_display()}}</strong>".
+</p>
+<p>
+ {% trans %}When:{% endtrans %} {{question.closed_at|diff_date}}
+</p>
+<p>
+ {% trans %}Reopen this question?{% endtrans %}
+</p>
+<form id="fmclose" action="{% url reopen question.id %}" method="post" >{% csrf_token %}
+ <div id="" style="padding:20px 0 20px 0">
+ <input type="submit" value="{% trans %}Reopen this question{% endtrans %}" class="submit" />&nbsp;
+ <input id="btBack" type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" />
+ </div>
+</form>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $().ready(function(){
+ $('#btBack').bind('click', function(){ history.back(); });
+ });
+ </script>
+{% endblock %}
+<!-- end reopen.html -->
diff --git a/askbot/skins/old/templates/revisions.html b/askbot/skins/old/templates/revisions.html
new file mode 100644
index 00000000..0c10e6d4
--- /dev/null
+++ b/askbot/skins/old/templates/revisions.html
@@ -0,0 +1,97 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- revisions.html -->
+{% block title %}{% spaceless %}{% trans %}Revision history{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>
+ {% trans %}Revision history{% endtrans %} [<a href="{{ post.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]
+</h1>
+<div id="revisions">
+{% for revision in revisions %}
+ <div class="revision">
+ <div
+ id="rev-header-{{ revision.revision }}"
+ class="header {% if post.author_id == revision.author_id %}author{% endif %}"
+ >
+ <div class="header-controls">
+ <table width="100%">
+ <tr>
+ <td width="20" style="vertical-align:middle">
+ <img
+ id="rev-arrow-{{ revision.revision }}"
+ src="{{"/images/expander-arrow-show.gif"|media}}"
+ alt="{% trans %}click to hide/show revision{% endtrans %}"
+ />
+ </td>
+ <td width="30px" style="vertical-align:middle">
+ <span
+ class="revision-number"
+ title="{% trans number=revision.revision %}revision {{number}}{% endtrans %}">{{ revision.revision }}</span></td>
+ <td width="200px" style="vertical-align:middle">
+ {% if revision.summary %}
+ <div class="summary">
+ <span>{{ revision.summary }}</span>
+ </div>
+ {% endif %}
+ {% if request.user|can_edit_post(post) %}
+ <a href="{% url edit_answer post.id %}?revision={{ revision.revision }}">{% trans %}edit{% endtrans %}</a>
+ {% endif %}
+ </td>
+ <td align="right">
+ <div class="revision-mark" >
+ {% if revision.revision == 1 %}
+ {% set contributor_type = "original_author" %}
+ {% else %}
+ {% set contributor_type = "last_updater" %}
+ {% endif %}
+ {{ macros.post_contributor_info(
+ revision,
+ contributor_type,
+ False,
+ 0
+ )
+ }}
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div id="rev-body-{{ revision.revision }}" class="answerbody">
+ {{ revision.diff }}
+ </div>
+ </div>
+{% endfor %}
+</div>
+{% endblock %}
+
+{% block endjs %}
+ <script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
+ <script type="text/javascript">
+ //todo - take this out into .js file
+ $(document).ready(function(){
+ $("#nav_questions").attr('className',"on");
+ $('div.revision div[id^=rev-header-]').bind('click', function(){
+ var revId = this.id.substr(11);
+ toggleRev(revId);
+
+ });
+ lanai.highlightSyntax();
+ });
+
+ 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);
+ $("#rev-body-" + id).slideToggle("fast");
+ }
+</script>
+{% endblock %}
+<!-- end revisions.html -->
diff --git a/askbot/skins/old/templates/subscribe_for_tags.html b/askbot/skins/old/templates/subscribe_for_tags.html
new file mode 100644
index 00000000..b436fb84
--- /dev/null
+++ b/askbot/skins/old/templates/subscribe_for_tags.html
@@ -0,0 +1,19 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+{% block title %}{% trans %}Subscribe for tags{% endtrans %}{% endblock %}
+{% block content %}
+<h1>{% trans %}Subscribe for tags{% endtrans %}</h1>
+<p>{% trans %}Please, subscribe for the following tags:{% endtrans %}</p>
+<ul class="tags" style="margin-left: 4px">
+ {% for tag in tags %}
+ {{ macros.tag_widget(tag, html_tag = 'li', is_link = False) }}
+ {% endfor %}
+</ul>
+<div style="clear:both;padding-top: 5px">
+ <form method="post" action="{% url subscribe_for_tags %}">{% csrf_token %}
+ <input type="hidden" name="tags" value="{{tags|join(' ')|escape}}" />
+ <input type="submit" name="ok" value="{% trans %}Subscribe{% endtrans %}" />
+ <input type="submit" name="nope" value="{% trans %}Cancel{% endtrans %}" />
+ </form>
+</div>
+{% endblock %}
diff --git a/askbot/skins/old/templates/tags.html b/askbot/skins/old/templates/tags.html
new file mode 100644
index 00000000..7d9026af
--- /dev/null
+++ b/askbot/skins/old/templates/tags.html
@@ -0,0 +1,75 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- tags.html -->
+{% block title %}{% spaceless %}{% trans %}Tag list{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<!-- Tabs -->
+<div class="tabBar">
+ {% if stag %}
+ <h1>{% trans %}Tags, matching "{{ stag }}"{% endtrans %}</h1>
+ {% else %}
+ <h1>{% trans %}Tag list{% endtrans %}</h1>
+ {% endif %}
+
+ <div class="tabsA">
+ <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>
+{% if tag_list_type == 'list' %}
+ {% if not tags.object_list %}
+ <span>{% trans %}Nothing found{% endtrans %}</span>
+ {% endif %}
+ {% if tags.object_list %}
+ <div class='clearfix'></div>
+ <ul class='tags'>
+ {% for tag in tags.object_list %}
+ <li>
+ {{ macros.tag_widget(
+ tag = tag.name,
+ url_params = 'start_over=true',
+ html_tag = 'div',
+ extra_content = '<span class="tag-number">&#215; ' ~
+ tag.used_count|intcomma ~ '</span>'
+ )
+ }}
+ </li>
+ {% endfor %}
+ </ul>
+ <div class="pager">
+ {{macros.paginator(paginator_context)}}
+ </div>
+ {% endif %}
+{% else %}
+ <div class="clearfix"></div>
+ {% if not tags %}
+ <span>{% trans %}Nothing found{% endtrans %}</span>
+ {% endif %}
+ {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }}
+{% endif %}
+
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ /*<![CDATA[*/
+ $().ready(function(){
+ $("#ipSearchTag").focus();
+ $("#type-tag").attr('checked',true);
+ Hilite.exact = false;
+ Hilite.elementid = "searchtags";
+ Hilite.debug_referrer = location.href;
+ });
+ /*]]>*/
+ </script>
+{% endblock %}
+<!-- end tags.html -->
diff --git a/askbot/skins/default/templates/two_column_body.html b/askbot/skins/old/templates/two_column_body.html
index a284744e..a284744e 100644
--- a/askbot/skins/default/templates/two_column_body.html
+++ b/askbot/skins/old/templates/two_column_body.html
diff --git a/askbot/skins/old/templates/user_profile/user.html b/askbot/skins/old/templates/user_profile/user.html
new file mode 100644
index 00000000..ad3d564b
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user.html
@@ -0,0 +1,42 @@
+{% extends "two_column_body.html" %}
+<!-- user.html -->
+{% block title %}{% spaceless %}{{ page_title }}{% endspaceless %}{% endblock %}
+{% block forestyle%}
+<style type="text/css">
+ .history-table td { padding: 5px; }
+</style>
+{% endblock %}
+{% block content %}
+ <h1>
+ {% spaceless %}
+ <a href="{% url user_profile view_user.id, view_user.username|slugify %}">
+ {% trans username=view_user.username %}{{username}}'s profile{% endtrans %} - {% block profilesection %}{% endblock %}
+ </a>
+ {% endspaceless %}
+ </h1>
+ <div style="margin-left: 5px;">
+ {% include "user_profile/user_tabs.html" %}
+ {% block usercontent %}
+ {% endblock %}
+ </div>
+{% endblock %}<!-- end user.html -->
+{% block endjs %}
+ <script type="text/javascript">
+ var viewUserID = {{view_user.id}};
+ askbot['data']['viewUserName'] = '{{ view_user.username }}';
+ </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>
+ {% block userjs %}
+ {% endblock %}
+{% endblock %}
+{% block sidebar %}
+
+{{ settings.SIDEBAR_PROFILE_HEADER }}
+
+{{ settings.SIDEBAR_PROFILE_FOOTER }}
+
+{% endblock %}
+<!-- end of user.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_edit.html b/askbot/skins/old/templates/user_profile/user_edit.html
new file mode 100644
index 00000000..1e2fa2d6
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_edit.html
@@ -0,0 +1,100 @@
+{% extends "one_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- user_edit.html -->
+{% block title %}{% spaceless %}{% trans %}Edit user profile{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<h1>
+ {{ request.user.username }} - {% 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 %}
+ <div id="left" style="float:left;width:180px">
+ {% if request.user.email %}
+ {{ macros.gravatar(request.user, 128) }}
+ {% else %}
+ <img src="{{"/images/nophoto.png"|media}}">
+ {% endif %}
+ <h1><a href="{% url faq %}#gravatar">{% trans %}change picture{% endtrans %}</a><h1>
+ </div>
+ <div style="float:right;width:750px;text-align:left;">
+ <h2>{% trans %}Registered user{% endtrans %}</h2>
+ <table class="user-details">
+ <tr>
+ <th width="100px"></th>
+ <th></th>
+ </tr>
+ <tr>
+ <td>{% trans %}Screen Name{% endtrans %}:</td>
+ <td>
+ {% if settings.EDITABLE_SCREEN_NAME %}
+ {{ form.username }}
+ <span class="form-error"></span> {{ form.username.errors }} </td>
+ {% else %}
+ {{ request.user.username }}
+ {% 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>
+ </tr>
+ <tr>
+ <td>{{ form.realname.label_tag() }}:</td>
+ <td>{{ form.realname }} <span class="form-error"></span> {{ form.realname.errors }} </td>
+ </tr>
+ <tr>
+ <td>{{ form.website.label_tag() }}:</td>
+ <td>{{ form.website }} <span class="form-error"></span> {{ form.website.errors }} </td>
+ </tr>
+ <tr>
+ <td>{{ form.city.label_tag() }}:</td>
+ <td>{{ form.city }} <span class="form-error"></span> {{ form.city.errors }} </td>
+ </tr>
+ <tr>
+ <td>{{ form.country.label_tag() }}:</td>
+ <td>{{ form.country }} <span class="form-error"></span> {{ form.country.errors }} </td>
+ </tr>
+ <tr>
+ <td>{{ form.show_country.label_tag() }}:</td>
+ <td>{{ form.show_country }} <span class="form-error"></span> {{ form.show_country.errors }} </td>
+ </tr>
+ <tr>
+ <td>{{ form.birthday.label_tag() }}:</td>
+ <td>{{ form.birthday }} <span class="form-error"></span> {{ form.birthday.errors }} </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="title-desc">{{ form.birthday.help_text }}</td>
+ </tr>
+ <tr style="height:10px">
+ <td colspan="2">
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:top">{{ form.about.label_tag() }}:</td>
+ <td>{{ form.about }} <span class="form-error"></span> {{ form.about.errors }} </td>
+ </tr>
+ </table>
+ <div style="margin:30px 0 60px 0">
+ <input type="submit" value="{% trans %}Update{% endtrans %}" class="submit" >&nbsp;
+ <input id="cancel" type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" >
+ </div>
+ </div>
+ </form>
+</div>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $().ready(function(){
+ $("#nav_profile").attr('className',"on");
+ $("#cancel").bind('click', function(){history.go(-1);})
+ });
+ </script>
+ {% block userjs %}
+ {% endblock %}
+{% endblock %}
+<!-- end user_edit.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_email_subscriptions.html b/askbot/skins/old/templates/user_profile/user_email_subscriptions.html
new file mode 100644
index 00000000..e6a18dd3
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_email_subscriptions.html
@@ -0,0 +1,27 @@
+{% extends "user_profile/user.html" %}
+<!-- user_email_subscriptions.html -->
+{% block profilesection %}
+ {% trans %}subscriptions{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ <h2>{% trans %}Email subscription settings{% endtrans %}</h2>
+ <p class="message">{% trans %}email subscription settings info{% endtrans %}</p>
+ <div>
+ {% if action_status %}
+ <p class="action-status"><span>{{action_status}}</span></p>
+ {% endif %}
+ <form method="post" action="">{% csrf_token %}
+ <table class='form-as-table ab-subscr-form'>
+ {{email_feeds_form.as_table()}}
+ </table>
+ <table class='form-as-table ab-tag-filter-form'>
+ {{tag_filter_selection_form}}
+ </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 %}"/>
+ </div>
+ </form>
+ </div>
+{% endblock %}
+<!-- end user_email_subscriptions.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_favorites.html b/askbot/skins/old/templates/user_profile/user_favorites.html
new file mode 100644
index 00000000..bb019c90
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_favorites.html
@@ -0,0 +1,9 @@
+{% extends "user_profile/user.html" %}
+<!-- user_favorites.html -->
+{% block profilesection %}
+ {% trans %}followed questions{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+{% include "user_profile/users_questions.html" %}
+{% endblock %}
+<!-- end user_favorites.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_inbox.html b/askbot/skins/old/templates/user_profile/user_inbox.html
new file mode 100644
index 00000000..e7e3dbfe
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_inbox.html
@@ -0,0 +1,106 @@
+{% extends "user_profile/user.html" %}
+{% import "macros.html" as macros %}
+<!-- user_responses.html -->
+{#
+This template accepts a list of response list
+they are a generalized form of any response and
+
+The following properties of response object are used:
+timestamp - when it happened
+user - user who gave response (database object)
+response_type - type of response
+response_url - link to the question
+response_title - title of the question
+response_snippet - abbreviated content of the response
+inbox_section - forum|flags
+#}
+{% block profilesection %}
+ {% trans %}inbox{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ <div style="padding-top:5px;font-size:13px;">
+ {% set re_count = request.user.new_response_count +
+ request.user.seen_response_count
+ %}
+ {% if moderation_items %}
+ {% set flag_count = moderation_items['new_count'] +
+ moderation_items['seen_count']
+ %}
+ {% else %}
+ {% set flag_count = 0 %}
+ {% endif %}
+ {% if re_count > 0 and flag_count > 0 %}
+ <div id="re_sections">
+ {% trans %}Sections:{% endtrans %}
+ <a href="{{request.user.get_absolute_url()}}?sort=inbox&section=forum"
+ {% if inbox_section == 'forum' %}class="on"{% endif %}
+ >
+ {% trans %}forum responses ({{re_count}}){% endtrans -%}
+ </a> |
+ <a href="{{request.user.get_absolute_url()}}?sort=inbox&section=flags"
+ {% if inbox_section == 'flags' %}class="on"{% endif %}
+ >
+ {% trans %}flagged items ({{flag_count}}){% endtrans %}
+ </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>
+ {% endif %}
+ <div id="responses">
+ {% for response in responses %}
+ <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>
+ {% 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 %}';
+ </script>
+<!-- end user_responses.html -->
+{% endblock %}
diff --git a/askbot/skins/old/templates/user_profile/user_info.html b/askbot/skins/old/templates/user_profile/user_info.html
new file mode 100644
index 00000000..36b782e5
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_info.html
@@ -0,0 +1,107 @@
+<!-- user_info.html -->
+{% import "macros.html" as macros %}
+<table class="user-info-table">
+ <tr>
+ <td style="vertical-align:top;text-align:center;">
+ <div class='avatar'>
+ {{ macros.gravatar(view_user, 128) }}
+ {% if request.user == view_user %}
+ <p><a
+ {% if support_custom_avatars %}
+ href="{% url avatar_change %}"
+ {% else %}
+ href="{% url faq %}#gravatar"
+ {% endif %}
+ >{% trans %}change picture{% endtrans %}</a></p>
+ {% if support_custom_avatars %}
+ <p><a
+ href="{% url avatar_delete %}"
+ >{% trans %}remove{% endtrans %}</a>
+ </p>
+ {% endif %}
+ {% endif %}
+ </div>
+ <div class="scoreNumber">{{view_user.reputation|intcomma}}</div>
+ <p><b style="color:#777;">{% trans %}reputation{% endtrans %}</b></p>
+ {% if user_follow_feature_on %}
+ {{ macros.follow_user_toggle(visitor = request.user, subject = view_user) }}
+ {% endif %}
+ </td>
+ <td width="360" style="padding-left:5px;vertical-align: top;">
+ <table class="user-details">
+ {% if request.user == view_user %}
+ <tr>
+ <td class="user-profile-tool-links" align="left" colspan="2">
+ <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 %}
+ | <a href="{{ settings.LOGIN_URL }}?next={{ settings.LOGIN_URL }}">
+ {% trans %}manage login methods{% endtrans %}
+ </a>
+ {% endif %}
+ </td>
+ </tr>
+ {% endif %}
+ <tr>
+ <th colspan="2" align="left">
+ <h3>{{user_status_for_display}}</h3>
+ </th>
+ </tr>
+ {% if view_user.real_name %}
+ <tr>
+ <td>{% trans %}real name{% endtrans %}</td>
+ <td><b>{{view_user.real_name}}</b></td>
+ </tr>
+ {% endif %}
+ <tr>
+ <td>{% trans %}member for{% endtrans %}</td>
+ <td><strong>{{ view_user.date_joined|diff_date }}</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>
+ </tr>
+ {% endif %}
+ {% if view_user.website %}
+ <tr>
+ <td>{% trans %}user website{% endtrans %}</td>
+ <td>{{ macros.user_website_link(view_user, max_display_length = 30) }}</td>
+ </tr>
+ {% endif %}
+ {% if view_user.location or view_user.country %}
+ <tr>
+ <td>{% trans %}location{% endtrans %}</td>
+ <td>{{ macros.user_full_location(view_user) }}</td>
+ </tr>
+ {% endif %}
+ {% if view_user.date_of_birth%}
+ <tr>
+ <!--todo - redo this with whole sentence translation -->
+ <td>{% trans %}age{% endtrans %}</td>
+ <td>{{view_user.date_of_birth|get_age}} {% trans %}age unit{% endtrans %}</td>
+ </tr>
+ {% endif %}
+ {#
+ <!--
+ {% if votes_today_left %}
+ <tr>
+ <td>{% trans "todays unused votes" %}</td>
+ <td><strong class="darkred">{{ votes_today_left }}</strong> {% trans "votes left" %}</td>
+ </tr>
+ {% endif %}
+ -->
+ #}
+ </table>
+ </td>
+ <td width="380">
+ <div class="user-about">
+ {% if view_user.about %}
+ {{view_user.about|linebreaks}}
+ {% endif %}
+ </div>
+ </td>
+ </tr>
+</table>
+<!-- end user_info.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_moderate.html b/askbot/skins/old/templates/user_profile/user_moderate.html
new file mode 100644
index 00000000..b2f350df
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_moderate.html
@@ -0,0 +1,94 @@
+{% extends "user_profile/user.html" %}
+<!-- user_moderate.html -->
+{% block profilesection %}
+ {% trans %}moderation{% endtrans %}
+{% 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>
+ {% if user_status_changed %}
+ <p class="action-status"><span>{% trans %}User status changed{% endtrans %}</span></p>
+ {% endif %}
+ <form method="post">{% csrf_token %}
+ <input type="hidden" name="sort" value="moderate"/>
+ <table class="form-as-table">
+ {{ change_user_status_form.as_table() }}
+ </table>
+ <p id="id_user_status_info">
+ </p>
+ <input type="submit" class="submit" name="change_status" value="{% trans %}Save{% endtrans %}" />
+ </form>
+{% endif %}
+<hr/>
+<h3>
+{% if request.user == view_user %}
+ {% trans reputation=view_user.reputation %}Your current reputation is {{reputation}} points{% endtrans %}
+{% else %}
+ {% trans reputation=view_user.reputation %}User's current reputation is {{reputation}} points{% endtrans %}
+{% endif %}
+</h3>
+{% if user_rep_changed %}
+ <p class="action-status"><span>{% trans %}User reputation changed{% endtrans %}</span></p>
+{% endif %}
+<form method="post">{% csrf_token %}
+ <input type="hidden" name="sort" value="moderate"/>
+ <table class="form-as-table">
+ {{ change_user_reputation_form.as_table() }}
+ </table>
+ <input type="submit" class="submit" name="subtract_reputation" value="{% trans %}Subtract{% endtrans %}" />&nbsp;
+ <input type="submit" class="submit" name="add_reputation" value="{% trans %}Add{% endtrans %}" />
+</form>
+{% if request.user != view_user %}
+<hr/>
+<h3>{% trans username=view_user.username %}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>
+ {% endif %}
+<form method="post">{% csrf_token %}
+ <input type="hidden" name="sort" value="moderate"/>
+ <div class="form-row-vertical">
+ <label for="id_subject_line">{{ send_message_form.subject_line.label}}</label>
+ {% if send_message_form.subject_line.errors %}
+ <p class="error">{{send_message_form.subject_line.errors|join(', ')}}</p>
+ {% endif %}
+ {{ send_message_form.subject_line}}
+ </div>
+ <div class="form-row-vertical">
+ <label for="id_body_text">{{ send_message_form.body_text.label}}</label>
+ {% if send_message_form.body_text.errors %}
+ <p class="error">{{send_message_form.body_text.errors|join(', ')}}</p>
+ {% endif %}
+ {{ send_message_form.body_text}}
+ </div>
+ <input type="submit" class="submit" name="send_message" value="{% trans %}Send message{% endtrans %}" />
+</form>
+{% endif %}
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript" >
+ $("#id_user_status_info").hide();
+ $("#id_user_status").change(function () {
+ var optionValue = $(this).attr('value');
+ if (optionValue == "d") {
+ $('#id_user_status_info').html("{% trans %}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.{% endtrans %}");
+ $('#id_user_status_info').show('slow');
+ } else if (optionValue == "m"){
+ $('#id_user_status_info').html("{% trans %}Moderators have the same privileges as administrators, but cannot add or remove user status of 'moderator' or 'administrator'.{% endtrans %}");
+ $('#id_user_status_info').show('slow');
+ } else if (optionValue == "a"){
+ $('#id_user_status_info').html("{% trans %}'Approved' status means the same as regular user.{% endtrans %}");
+ $('#id_user_status_info').show('slow');
+ } else if (optionValue == "s"){
+ $('#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').show('slow');
+ } else {
+ $('#id_user_status_info').hide('slow');
+ }
+ })
+ </script>
+{% endblock %}
diff --git a/askbot/skins/old/templates/user_profile/user_network.html b/askbot/skins/old/templates/user_profile/user_network.html
new file mode 100644
index 00000000..1fd2e06a
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_network.html
@@ -0,0 +1,25 @@
+{% extends "user_profile/user.html" %}
+{% import "macros.html" as macros %}
+<!-- user_network.html -->
+{% block profileseciton %}
+ {% trans %}network{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ {% 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') }}
+ {% 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') }}
+ {% 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>
+ {% endif %}
+ {% endif %}
+{% endblock %}
+<!-- end user_network.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_recent.html b/askbot/skins/old/templates/user_profile/user_recent.html
new file mode 100644
index 00000000..cbd59202
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_recent.html
@@ -0,0 +1,42 @@
+{% extends "user_profile/user.html" %}
+<!-- user_recent.html -->
+{% block profilesection %}
+ {% trans %}activity{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ <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: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 %}
+ {% 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 %}
+ {% endif %}
+ <div style="height:5px"></div>
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+{% endblock %}
+<!-- end user_recent.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_reputation.html b/askbot/skins/old/templates/user_profile/user_reputation.html
new file mode 100644
index 00000000..99b304d2
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_reputation.html
@@ -0,0 +1,40 @@
+{% extends "user_profile/user.html" %}
+<!-- user_reputation.html -->
+{% block profilesection %}
+ {% trans %}karma{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ <div class="karma-summary">
+ <div id="diagram" class="karma-diagram"></div>
+ <div class="karma-details">
+ {% if view_user.id == user.id %}
+ <h3>{% trans %}Your karma change log.{% endtrans %}</h3>
+ {% else %}
+ <h3>{% trans user_name=view_user.username %}{{user_name}}'s karma change log{% endtrans %}</h3>
+ {% 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>
+ </p>
+ {% endfor %}
+ </div>
+ </div>
+{% endblock %}
+{% block userjs %}
+ <script type='text/javascript' src='{{"/js/excanvas.min.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/jquery.flot.min.js"|media}}'></script>
+ <script type="text/javascript">
+ $().ready(function(){
+ var d = {{ reps }};
+ var placeholder = $("#diagram");
+ var plot = $.plot(placeholder, [d], {
+ xaxis: { mode: "time" },
+ points: { show: true },
+ lines: { show: true }
+ });
+ });
+ </script>
+{% endblock %}<!-- end user_reputation.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_stats.html b/askbot/skins/old/templates/user_profile/user_stats.html
new file mode 100644
index 00000000..d9002d30
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_stats.html
@@ -0,0 +1,159 @@
+{% extends "user_profile/user.html" %}
+{% import "macros.html" as 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=questions|length %}<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>
+ </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>
+
+ </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 %}
+ </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>
+{% endblock %}
+{% block endjs %}
+ {{ super() }}
+ <script type="text/javascript">
+ $(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);
+ }
+ });
+ });
+ </script>
+{% endblock %}
+<!-- end user_stats.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_tabs.html b/askbot/skins/old/templates/user_profile/user_tabs.html
new file mode 100644
index 00000000..ad24a303
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_tabs.html
@@ -0,0 +1,52 @@
+<!-- user_tabs.html -->
+<div class="tabBar">
+ <div class="tabsC">
+ <a id="stats" {% if tab_name=="stats" %}class="on"{% endif %}
+ title="{% trans %}User profile{% endtrans %}"
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=stats"
+ ><span>{% trans %}overview{% endtrans %}</span></a>
+ {% if request.user == view_user or request.user|can_moderate_user(view_user) %}
+ <a id="inbox" {% if tab_name=="inbox" %}class="on"{% endif %}
+ title="{% trans %}comments and answers to others questions{% endtrans %}"
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=inbox"
+ ><span>{% trans %}inbox{% endtrans %}</span></a>
+ {% endif %}
+ {% if user_follow_feature_on %}
+ <a id="network" {% if tab_name=="network" %}class="on"{% endif %}
+ title="{% trans %}followers and followed users{% endtrans %}"
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=network"
+ ><span>{% trans %}network{% endtrans %}</span></a>
+ {% endif %}
+ <a id="reputation" {% if tab_name=="reputation" %}class="on"{% endif %}
+ title="{% trans %}graph of user reputation{% endtrans %}"
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=reputation"
+ ><span>{% trans %}reputation history{% endtrans %}</span></a>
+ <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 %}"
+ 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>
+ {% 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 %}
+ title="{% trans %}email subscription settings{% endtrans %}"
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=email_subscriptions"
+ ><span>{% trans %}subscriptions{% endtrans %}</span></a>
+ {% endif %}
+ {% if request.user|can_moderate_user(view_user) %}
+ <a id="moderation" {% if tab_name=="moderation" %}class="on"{% endif %}
+ title="{% trans %}moderate this user{% endtrans %}"
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=moderation"
+ ><span>{% trans %}moderation{% endtrans %}</span></a>
+ {% endif %}
+ </div>
+</div>
+<!-- end user_tabs.html -->
diff --git a/askbot/skins/old/templates/user_profile/user_votes.html b/askbot/skins/old/templates/user_profile/user_votes.html
new file mode 100644
index 00000000..d5e469ae
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/user_votes.html
@@ -0,0 +1,30 @@
+{% extends "user_profile/user.html" %}
+<!-- user_votes.html -->
+{% block profilesection %}
+ {% trans %}votes{% endtrans %}
+{% endblock %}
+{% block usercontent %}
+ <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:30px;float:left">
+ {% if vote.vote==1 %}
+ <img src="{{"/images/vote-arrow-up-on.png"|media}}" title="{% trans %}upvote{% endtrans %}">
+ {% else %}
+ <img src="{{"/images/vote-arrow-down-on.png"|media}}" title="{% trans %}downvote{% endtrans %}">
+ {% endif %}
+ </div>
+ <div style="float:left;overflow:hidden;width:750px">
+ {% if vote.answer_id==0 %}
+ <span class="question-title-link"><a href="{% url question vote.question_id %}{{ vote.title|slugify }}">{{ vote.title|escape }}</a></span>
+ {% else %}
+ <span class="answer-title-link" ><a href="{% url question vote.question_id %}{{ vote.title|slugify }}#{{ vote.answer_id }}">{{ vote.title|escape}}</a></span>
+ {% endif %}
+ <div style="height:5px"></div>
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+{% endblock %}
+<!-- end user_votes.html -->
diff --git a/askbot/skins/old/templates/user_profile/users_questions.html b/askbot/skins/old/templates/user_profile/users_questions.html
new file mode 100644
index 00000000..41809a62
--- /dev/null
+++ b/askbot/skins/old/templates/user_profile/users_questions.html
@@ -0,0 +1,8 @@
+<!-- users_questions.html -->
+{% import "macros.html" as macros %}
+<div class="user-stats-table">
+ {% for question in questions %}
+ {{macros.question_summary(question, extra_class='narrow')}}
+ {% endfor %}
+</div>
+<!-- end users_questions.html -->
diff --git a/askbot/skins/old/templates/users.html b/askbot/skins/old/templates/users.html
new file mode 100644
index 00000000..750b3abb
--- /dev/null
+++ b/askbot/skins/old/templates/users.html
@@ -0,0 +1,58 @@
+{% extends "two_column_body.html" %}
+{% import "macros.html" as macros %}
+<!-- users.html -->
+{% block title %}{% spaceless %}{% trans %}Users{% endtrans %}{% endspaceless %}{% endblock %}
+{% block content %}
+<div class="tabBar">
+ <h1>{% trans %}Users{% endtrans %}</h1>
+ <div class="tabsA">
+ <a
+ id="sort_reputation"
+ href="{% url users %}?sort=reputation"
+ {% if tab_id == 'reputation' %}class="on"{% endif %}
+ title="{% trans %}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 %}recent{% 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 %}oldest{% 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 %}by username{% endtrans %}"
+ ><span>{% trans %}by username{% endtrans %}</span></a>
+ </div>
+</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) }}
+<div class="pager">
+ {{ macros.paginator(paginator_context) }}
+</div>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ //todo move javascript out
+ $().ready(function(){
+ Hilite.exact = false;
+ Hilite.elementid = "main-body";
+ Hilite.debug_referrer = location.href;
+ });
+ </script>
+{% endblock %}
+<!-- end users.html -->
diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py
index e7997f7a..da3a8a06 100644
--- a/askbot/skins/utils.py
+++ b/askbot/skins/utils.py
@@ -42,20 +42,21 @@ def get_available_skins(selected=None):
stock_dir = os.path.normpath(os.path.dirname(__file__))
stock_skins = get_skins_from_dir(stock_dir)
default_dir = stock_skins.pop('default')
+ common_dir = stock_skins.pop('common')
skins.update(stock_skins)
-
if selected:
if selected in skins:
selected_dir = skins[selected]
skins.clear()
skins[selected] = selected_dir
else:
- assert(selected == 'default')
+ assert(selected == 'default' or selected == 'common')
skins = SortedDict()
#re-insert default as a last item
skins['default'] = default_dir
+ skins['common'] = common_dir
return skins
diff --git a/askbot/startup_procedures.py b/askbot/startup_procedures.py
index 08b91e7a..7ca06e1b 100644
--- a/askbot/startup_procedures.py
+++ b/askbot/startup_procedures.py
@@ -8,6 +8,7 @@ question: why not run these from askbot/__init__.py?
the main function is run_startup_tests
"""
import sys
+import os
from django.db import transaction
from django.conf import settings as django_settings
from django.core.exceptions import ImproperlyConfigured
@@ -34,7 +35,7 @@ def format_as_text_tuple_entries(items):
#
# *validate emails in settings.py
def test_askbot_url():
- """Tests the ASKBOT_URL setting for the
+ """Tests the ASKBOT_URL setting for the
well-formedness and raises the ImproperlyConfigured
exception, if the setting is not good.
"""
@@ -76,6 +77,7 @@ def test_middleware():
'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',
@@ -91,8 +93,8 @@ def test_middleware():
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
+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
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)
@@ -112,19 +114,8 @@ the list of MIDDLEWARE_CLASSES in your settings.py - these are not used any more
middleware_text = format_as_text_tuple_entries(remove_middleware_set)
raise ImproperlyConfigured(PREAMBLE + error_message + middleware_text)
-
-
-def test_i18n():
- """askbot requires use of USE_I18N setting"""
- if getattr(django_settings, 'USE_I18N', False) == False:
- raise ImproperlyConfigured(
- 'Please set USE_I18N = True in settings.py and '
- 'set the LANGUAGE_CODE parameter correctly '
- 'it is very important for askbot.'
- )
-
def try_import(module_name, pypi_package_name):
- """tries importing a module and advises to install
+ """tries importing a module and advises to install
A corresponding Python package in the case import fails"""
try:
load_module(module_name)
@@ -173,25 +164,90 @@ def test_encoding():
)
def test_template_loader():
- """Sends a warning if you have an old style template
+ """Sends a warning if you have an old style template
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 + \
"\nPlease change: \n"
- "'askbot.skins.loaders.load_template_source', to\n"
+ "'askbot.skins.loaders.load_template_source', to\n"
"'askbot.skins.loaders.filesystem_load_template_source',\n"
"in the TEMPLATE_LOADERS of your settings.py file"
)
def test_celery():
- """Tests celery settings"""
- if hasattr(django_settings, 'BROKER_BACKEND'):
+ """Tests celery settings
+ todo: we are testing two things here
+ that correct name is used for the setting
+ and that a valid value is chosen
+ """
+ broker_backend = getattr(django_settings, 'BROKER_BACKEND', None)
+ broker_transport = getattr(django_settings, 'BROKER_TRANSPORT', None)
+
+ if broker_backend is None:
+ if broker_transport is None:
+ raise ImproperlyConfigured(PREAMBLE + \
+ "\nPlease add\n"
+ 'BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"\n'
+ "or other valid value to your settings.py file"
+ )
+ else:
+ #todo: check that broker transport setting is valid
+ return
+
+ if broker_backend != broker_transport:
+ raise ImproperlyConfigured(PREAMBLE + \
+ "\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"
+ "delete the BROKER_BACKEND setting and leave the BROKER_TRANSPORT"
+ )
+
+ if hasattr(django_settings, 'BROKER_BACKEND') and not hasattr(django_settings, 'BROKER_TRANSPORT'):
raise ImproperlyConfigured(PREAMBLE + \
"\nPlease rename setting BROKER_BACKEND to BROKER_TRANSPORT\n"
"in your settings.py file"
)
+class SettingsTester(object):
+ """class to test contents of the settings.py file"""
+
+ def __init__(self, requirements = None):
+ """loads the settings module and inits some variables
+ parameter `requirements` is a dictionary with keys
+ as setting names and values - another dictionary, which
+ has keys (optional, if noted and required otherwise)::
+
+ * required_value (optional)
+ * error_message
+ """
+ self.settings = load_module(os.environ['DJANGO_SETTINGS_MODULE'])
+ self.messages = list()
+ self.requirements = requirements
+
+
+ def test_setting(self, name, value = None, message = 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)
+
+ def run(self):
+ for setting_name in self.requirements:
+ self.test_setting(
+ setting_name,
+ **self.requirements[setting_name]
+ )
+ if len(self.messages) != 0:
+ raise ImproperlyConfigured(
+ PREAMBLE +
+ '\n\nTime to do some maintenance of your settings.py:\n\n* ' +
+ '\n\n* '.join(self.messages)
+ )
+
def run_startup_tests():
"""function that runs
all startup tests, mainly checking settings config so far
@@ -202,10 +258,27 @@ def run_startup_tests():
test_encoding()
test_modules()
test_askbot_url()
- test_i18n()
test_postgres()
test_middleware()
test_celery()
+ settings_tester = SettingsTester({
+ 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY': {
+ 'value': True,
+ 'message': "add line CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True"
+ },
+ 'USE_I18N': {
+ 'value': True,
+ 'message': 'Please set USE_I18N = True and\n'
+ 'set the LANGUAGE_CODE parameter correctly'
+ },
+ 'LOGIN_REDIRECT_URL': {
+ 'message': 'add setting LOGIN_REDIRECT_URL - an url\n'
+ 'where you want to send users after they log in\n'
+ 'a reasonable default is\n'
+ 'LOGIN_REDIRECT_URL = ASKBOT_URL'
+ }
+ })
+ settings_tester.run()
@transaction.commit_manually
def run():
diff --git a/askbot/tests/__init__.py b/askbot/tests/__init__.py
index b06c2b06..49546e8e 100644
--- a/askbot/tests/__init__.py
+++ b/askbot/tests/__init__.py
@@ -1,3 +1,4 @@
+from askbot.tests.cache_tests import *
from askbot.tests.email_alert_tests import *
from askbot.tests.on_screen_notification_tests import *
from askbot.tests.page_load_tests import *
@@ -11,3 +12,5 @@ from askbot.tests.form_tests import *
from askbot.tests.follow_tests import *
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 *
diff --git a/askbot/tests/cache_tests.py b/askbot/tests/cache_tests.py
new file mode 100644
index 00000000..5eda8c74
--- /dev/null
+++ b/askbot/tests/cache_tests.py
@@ -0,0 +1,43 @@
+from django.db import connection
+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)
+ settings.DEBUG = True # because it's forsed to False
+
+ def visit_question(self):
+ self.client.get(self.question.get_absolute_url(), follow=True)
+
+ def test_anonymous_question_cache(self):
+
+ self.visit_question()
+ counter = len(connection.queries)
+ print 'we have %d queries' % counter
+ self.visit_question()
+
+ #second hit to the same question should give fewer queries
+ self.assertTrue(counter > len(connection.queries))
+ settings.DEBUG = False
+
+ def test_authentificated_no_question_cache(self):
+ url = reverse('question', kwargs={'id': self.question.id})
+
+ password = '123'
+ self.other_user.set_password(password)
+ self.client.login(username=self.other_user.username, password=password)
+
+ self.visit_question()
+ counter = len(connection.queries)
+ self.visit_question()
+
+ #expect the same number of queries both times
+ self.assertEqual(counter, len(connection.queries))
+ settings.DEBUG = False
+
+
diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py
index 00091934..b54bb2e9 100644
--- a/askbot/tests/db_api_tests.py
+++ b/askbot/tests/db_api_tests.py
@@ -4,6 +4,9 @@ functions that happen on behalf of users
e.g. ``some_user.do_something(...)``
"""
from django.core import exceptions
+from django.core.urlresolvers import reverse
+from django.test.client import Client
+from django.conf import settings
from askbot.tests.utils import AskbotTestCase
from askbot import models
from askbot import const
diff --git a/askbot/tests/misc_tests.py b/askbot/tests/misc_tests.py
new file mode 100644
index 00000000..c452d518
--- /dev/null
+++ b/askbot/tests/misc_tests.py
@@ -0,0 +1,60 @@
+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):
+
+ def setUp(self):
+ self.u1 = self.create_user(username='user1')
+ 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.assertIsNone(get_related_object_type_name(ct.id, self.u2.id))
+
+ 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.assertIsNone(get_related_object_type_name(ct.id, comment.id))
+
+ 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)
+ with self.assertRaises(NotImplementedError):
+ question.revisions.create()
+ with self.assertRaises(NotImplementedError):
+ PostRevision.objects.create()
diff --git a/askbot/tests/page_load_tests.py b/askbot/tests/page_load_tests.py
index 9c107112..e0bcce86 100644
--- a/askbot/tests/page_load_tests.py
+++ b/askbot/tests/page_load_tests.py
@@ -1,6 +1,7 @@
from django.test import TestCase
from django.test import signals
from django.template import defaultfilters
+from django.conf import settings
from django.core.urlresolvers import reverse
import coffin
import coffin.template
@@ -8,11 +9,15 @@ 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
+
def patch_jinja2():
from jinja2 import Template
ORIG_JINJA2_RENDERER = Template.render
+
def instrumented_render(template_object, *args, **kwargs):
context = dict(*args, **kwargs)
signals.template_rendered.send(
@@ -25,28 +30,38 @@ 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(TestCase):
+
+class PageLoadTestCase(AskbotTestCase):
def try_url(
self,
- url_name, status_code=200, template=None,
+ url_name, status_code=200, template=None,
kwargs={}, redirect_url=None, follow=False,
- data = {},
- ):
- url = reverse(url_name, kwargs = kwargs)
- url_info = 'getting url %s' % url
+ data={}):
+ url = reverse(url_name, kwargs=kwargs)
+ if status_code == 302:
+ url_info = 'redirecting to LOGIN_URL in closed_mode: %s' % url
+ else:
+ url_info = 'getting url %s' % url
if data:
url_info += '?' + '&'.join(['%s=%s' % (k, v) for k, v in data.iteritems()])
print url_info
+ # if redirect expected, but we wont' follow
+ if status_code == 302 and follow:
+ response = self.client.get(url, data=data)
+ self.assertTrue(settings.LOGIN_URL in response['Location'])
+ return
+
r = self.client.get(url, data=data, follow=follow)
if hasattr(self.client, 'redirect_chain'):
print 'redirect chain: %s' % ','.join(self.client.redirect_chain)
self.assertEqual(r.status_code, status_code)
- if template:
+ if template and status_code != 302:
if isinstance(r.template, coffin.template.Template):
self.assertEqual(r.template.name, template)
elif isinstance(r.template, list):
@@ -66,8 +81,29 @@ class PageLoadTestCase(TestCase):
else:
raise Exception('unexpected error while runnig test')
-class PageLoadTests(PageLoadTestCase):
- fixtures = ['tmp/fixture2.json', ]
+ def setUp(self):
+ self.u1 = self.create_user(username='user1')
+ self.u2 = self.create_user(username='user2')
+ self.u3 = self.create_user(username='user3')
+
+ self.question = self.post_question(user=self.u1)
+
+ self.answer = self.post_answer(user=self.u1, question=self.question)
+ self.answer.id = 38 # one of the tests tries this id
+ self.answer.save()
+
+ self.question2 = self.post_question(user=self.u2)
+ self.question2.id = 2
+ self.question2.save()
+
+ self.question3 = self.post_question(user=self.u3)
+ self.question3.id = 3
+ self.question3.save()
+
+ self.question17 = self.post_question(user=self.u1)
+ self.question17.id = 17
+ self.question17.save()
+
def test_index(self):
#todo: merge this with all reader url tests
@@ -77,168 +113,236 @@ class PageLoadTests(PageLoadTestCase):
self.failUnless(response.redirect_chain[0][0].endswith('/questions/'))
self.assertEquals(response.template.name, 'main_page.html')
- def proto_test_non_user_urls(self):
+ def proto_test_ask_page(self, allow_anonymous, status_code):
+ prev_setting = askbot_settings.ALLOW_POSTING_BEFORE_LOGGING_IN
+ askbot_settings.update('ALLOW_POSTING_BEFORE_LOGGING_IN', allow_anonymous)
+ self.try_url(
+ 'ask',
+ status_code = status_code,
+ template = 'ask.html'
+ )
+ askbot_settings.update('ALLOW_POSTING_BEFORE_LOGGING_IN', prev_setting)
+
+ def test_ask_page_allowed_anonymous(self):
+ self.proto_test_ask_page(True, 200)
+
+ def test_ask_page_disallowed_anonymous(self):
+ self.proto_test_ask_page(False, 302)
+
+ def proto_test_non_user_urls(self, status_code):
"""test all reader views thoroughly
on non-crashiness (no correcteness tests here)
"""
self.try_url('sitemap')
- self.try_url('feeds', kwargs={'url':'rss'})
- self.try_url('about', template='about.html')
- self.try_url('privacy', template='privacy.html')
+ self.try_url(
+ 'feeds',
+ status_code=status_code,
+ kwargs={'url':'rss'})
+ self.try_url(
+ 'about',
+ status_code=status_code,
+ template='about.html')
+ self.try_url(
+ 'privacy',
+ status_code=status_code,
+ template='privacy.html')
self.try_url('logout', template='authopenid/logout.html')
#todo: test different tabs
- self.try_url('tags', template='tags.html')
- self.try_url('tags', data={'sort':'name'}, template='tags.html')
- self.try_url('tags', data={'sort':'used'}, template='tags.html')
- self.try_url('badges', template='badges.html')
self.try_url(
- 'answer_revisions',
+ 'tags',
+ status_code=status_code,
+ template='tags.html')
+ self.try_url(
+ 'tags',
+ status_code=status_code,
+ data={'sort':'name'}, template='tags.html')
+ self.try_url(
+ 'tags',
+ status_code=status_code,
+ data={'sort':'used'}, template='tags.html')
+ self.try_url(
+ 'badges',
+ status_code=status_code,
+ template='badges.html')
+ self.try_url(
+ 'answer_revisions',
+ status_code=status_code,
template='revisions.html',
kwargs={'id':38}
)
#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'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'scope':'unanswered'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'scope':'favorite'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'scope':'unanswered', 'sort':'age-desc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'scope':'unanswered', 'sort':'age-asc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'scope':'unanswered', 'sort':'activity-desc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'scope':'unanswered', 'sort':'activity-asc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'sort':'answers-desc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'sort':'answers-asc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'sort':'votes-desc'},
template='main_page.html'
)
self.try_url(
'questions',
+ status_code=status_code,
data={'sort':'votes-asc'},
template='main_page.html'
)
self.try_url(
'question',
+ status_code=status_code,
kwargs={'id':1},
follow=True,
template='question.html'
)
self.try_url(
'question',
+ status_code=status_code,
kwargs={'id':2},
follow=True,
template='question.html'
)
self.try_url(
'question',
+ status_code=status_code,
kwargs={'id':3},
follow=True,
template='question.html'
)
self.try_url(
'question_revisions',
+ status_code=status_code,
kwargs={'id':17},
template='revisions.html'
)
- self.try_url('users', template='users.html')
+ self.try_url('users',
+ status_code=status_code,
+ template='users.html')
#todo: really odd naming conventions for sort methods
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'reputation'},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'newest'},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'last'},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'user'},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'reputation', 'page':2},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'newest', 'page':2},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'last', 'page':2},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'user', 'page':2},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'reputation', 'page':1},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'newest', 'page':1},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'last', 'page':1},
)
self.try_url(
'users',
+ status_code=status_code,
template='users.html',
data={'sort':'user', 'page':1},
)
@@ -246,72 +350,99 @@ class PageLoadTests(PageLoadTestCase):
'edit_user',
template='authopenid/signin.html',
kwargs={'id':4},
- status_code=200,
+ status_code=status_code,
follow=True,
)
self.try_url(
'faq',
template='faq_static.html',
- status_code=200,
+ status_code=status_code,
)
def test_non_user_urls(self):
- self.proto_test_non_user_urls()
+ self.proto_test_non_user_urls(status_code=200)
+
+ @skipIf('askbot.middleware.forum_mode.ForumModeMiddleware' \
+ not in settings.MIDDLEWARE_CLASSES,
+ 'no ForumModeMiddleware set')
+ def test_non_user_urls_in_closed_forum_mode(self):
+ askbot_settings.ASKBOT_CLOSED_FORUM_MODE = True
+ self.proto_test_non_user_urls(status_code=302)
+ askbot_settings.ASKBOT_CLOSED_FORUM_MODE = False
#def test_non_user_urls_logged_in(self):
#user = User.objects.get(id=1)
#somehow login this user
#self.proto_test_non_user_urls()
- def test_user_urls(self):
+ def proto_test_user_urls(self, status_code):
user = models.User.objects.get(id=2)
name_slug = slugify(user.username)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'stats'},
+ status_code=status_code,
+ data={'sort':'stats'},
template='user_profile/user_stats.html'
)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'recent'},
+ status_code=status_code,
+ data={'sort':'recent'},
template='user_profile/user_recent.html'
)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'inbox'},
+ status_code=status_code,
+ data={'sort':'inbox'},
template='authopenid/signin.html',
follow=True
)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'reputation'},
+ status_code=status_code,
+ data={'sort':'reputation'},
template='user_profile/user_reputation.html'
)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'votes'},
+ status_code=status_code,
+ data={'sort':'votes'},
template='authopenid/signin.html',
follow = True
)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'favorites'},
+ status_code=status_code,
+ data={'sort':'favorites'},
template='user_profile/user_favorites.html'
)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': 2, 'slug': name_slug},
- data={'sort':'email_subscriptions'},
+ status_code=status_code,
+ data={'sort':'email_subscriptions'},
template='authopenid/signin.html',
follow = True
)
+ def test_user_urls(self):
+ self.proto_test_user_urls(status_code=200)
+
+ @skipIf('askbot.middleware.forum_mode.ForumModeMiddleware' \
+ not in settings.MIDDLEWARE_CLASSES,
+ 'no ForumModeMiddleware set')
+ def test_user_urls_in_closed_forum_mode(self):
+ askbot_settings.ASKBOT_CLOSED_FORUM_MODE = True
+ self.proto_test_user_urls(status_code=302)
+ askbot_settings.ASKBOT_CLOSED_FORUM_MODE = False
+
+
def test_user_urls_logged_in(self):
user = models.User.objects.get(id=2)
name_slug = slugify(user.username)
@@ -338,12 +469,13 @@ class PageLoadTests(PageLoadTestCase):
)
self.client.login(method = 'force', user_id = asker.id)
self.try_url(
- 'user_profile',
+ 'user_profile',
kwargs={'id': asker.id, 'slug': slugify(asker.username)},
- data={'sort':'inbox'},
+ data={'sort':'inbox'},
template='user_profile/user_inbox.html',
)
+
class AvatarTests(AskbotTestCase):
def test_avatar_for_two_word_user_works(self):
diff --git a/askbot/tests/permission_assertion_tests.py b/askbot/tests/permission_assertion_tests.py
index 83476c79..b83d7827 100644
--- a/askbot/tests/permission_assertion_tests.py
+++ b/askbot/tests/permission_assertion_tests.py
@@ -1,10 +1,15 @@
import datetime
+from django.test.client import Client
+from django.core.urlresolvers import reverse
+from django.conf import settings
from django.test import TestCase
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
+
class PermissionAssertionTestCase(TestCase):
"""base TestCase class for permission
@@ -1368,23 +1373,27 @@ class AcceptBestAnswerPermissionAssertionTests(utils.AskbotTestCase):
self.third_user.reputation = 1000000
self.assert_user_cannot(user = self.third_user)
- def test_moderator_cannot_accept_others_answer(self):
- self.other_post_answer()
- self.create_user(username = 'third_user')
- self.third_user.set_status('m')
- self.assert_user_cannot(user = self.third_user)
-
def test_moderator_cannot_accept_own_answer(self):
self.other_post_answer()
self.other_user.set_status('m')
self.assert_user_cannot(user = self.other_user)
- def test_admin_cannot_accept_others_answer(self):
+ def test_moderator_cannot_accept_others_answer_today(self):
+ self.other_post_answer()
+ self.create_user(username = 'third_user')
+ self.third_user.set_status('m')
+ self.assert_user_cannot(user = self.third_user)
+
+ def test_moderator_can_accept_others_old_answer(self):
self.other_post_answer()
+ self.answer.added_at -= datetime.timedelta(
+ days = askbot_settings.MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER + 1
+ )
+ self.answer.save()
self.create_user(username = 'third_user')
self.third_user.set_admin_status()
self.third_user.save()
- self.assert_user_cannot(user = self.third_user)
+ self.assert_user_can(user = self.third_user)
def test_admin_cannot_accept_own_answer(self):
self.other_post_answer()
@@ -1392,6 +1401,24 @@ class AcceptBestAnswerPermissionAssertionTests(utils.AskbotTestCase):
self.other_user.save()
self.assert_user_cannot(user = self.other_user)
+ def test_admin_cannot_accept_others_answer_today(self):
+ self.other_post_answer()
+ self.create_user(username = 'third_user')
+ self.third_user.set_admin_status()
+ self.third_user.save()
+ self.assert_user_cannot(user = self.third_user)
+
+ def test_admin_can_accept_others_old_answer(self):
+ self.other_post_answer()
+ self.answer.added_at -= datetime.timedelta(
+ days = askbot_settings.MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER + 1
+ )
+ self.answer.save()
+ self.create_user(username = 'third_user')
+ self.third_user.set_admin_status()
+ self.third_user.save()
+ self.assert_user_can(user = self.third_user)
+
class VotePermissionAssertionTests(PermissionAssertionTestCase):
"""Tests permission for voting
"""
@@ -1551,3 +1578,43 @@ class UploadPermissionAssertionTests(PermissionAssertionTestCase):
self.user.assert_can_upload_file()
except exceptions.PermissionDenied:
self.fail('high rep user must be able to upload')
+
+class ClosedForumTests(utils.AskbotTestCase):
+ def setUp(self):
+ self.password = '123'
+ self.create_user()
+ self.create_user(username = 'other_user')
+ self.other_user.set_password(self.password)
+ self.other_user.save()
+ self.question = self.post_question()
+ self.test_url = self.question.get_absolute_url()
+ self.redirect_to = settings.LOGIN_URL
+ self.client = Client()
+ askbot_settings.ASKBOT_CLOSED_FORUM_MODE = True
+
+ @skipIf('askbot.middleware.forum_mode.ForumModeMiddleware' \
+ not in settings.MIDDLEWARE_CLASSES,
+ 'no ForumModeMiddleware set')
+ def test_login_page_accessable(self):
+ # futher see in page_load_tests.py
+ response = self.client.get(reverse('user_signin'))
+ self.assertEquals(response.status_code, 200)
+
+ @skipIf('askbot.middleware.forum_mode.ForumModeMiddleware' \
+ not in settings.MIDDLEWARE_CLASSES,
+ 'no ForumModeMiddleware set')
+ def test_anonymous_access(self):
+ response = self.client.get(self.test_url)
+ self.assertEquals(response.status_code, 302)
+ self.assertTrue(self.redirect_to in response['Location'])
+
+ @skipIf('askbot.middleware.forum_mode.ForumModeMiddleware' \
+ not in settings.MIDDLEWARE_CLASSES,
+ 'no ForumModeMiddleware set')
+ def test_authenticated_access(self):
+ self.client.login(username=self.other_user.username, password=self.password)
+ response = self.client.get(self.test_url)
+ self.assertEquals(response.status_code, 200)
+
+ def tearDown(self):
+ askbot_settings.ASKBOT_CLOSED_FORUM_MODE = False
diff --git a/askbot/tests/post_model_tests.py b/askbot/tests/post_model_tests.py
new file mode 100644
index 00000000..7ea8621a
--- /dev/null
+++ b/askbot/tests/post_model_tests.py
@@ -0,0 +1,55 @@
+import datetime
+
+from django.core.exceptions import ValidationError
+from askbot.tests.utils import AskbotTestCase
+from askbot.models import PostRevision
+
+
+class PostModelTests(AskbotTestCase):
+
+ def setUp(self):
+ self.u1 = self.create_user(username='user1')
+ self.u2 = self.create_user(username='user2')
+ self.u3 = self.create_user(username='user3')
+
+ def test_model_validation(self):
+ with self.assertRaises(NotImplementedError):
+ PostRevision.objects.create(text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision_type=PostRevision.QUESTION_REVISION)
+
+ with self.assertRaisesRegexp(AttributeError, r"'NoneType' object has no attribute 'revisions'"):
+ # cannot set `revision` without a parent
+ PostRevision.objects.create_answer_revision(text='blah', author=self.u1, revised_at=datetime.datetime.now())
+
+ with 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.'\]}"):
+ # revision_type not in (1,2)
+ PostRevision(text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision=1, revision_type=4).save()
+
+ 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.save()
+ self.assertIsNotNone(rev2.id)
+
+ with 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.'\]}"):
+ PostRevision(question=question, text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision=2, revision_type=PostRevision.ANSWER_REVISION).save()
+
+ with self.assertRaisesRegexp(ValidationError, r"{'__all__': \[u'Revision_type doesn`t match values in question/answer fields.'\]}"):
+ PostRevision(question=question, text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision=3, revision_type=PostRevision.ANSWER_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
+ self.assertIsNotNone(rev3.id)
+ 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)
+
+ def test_post_revision_autoincrease(self):
+ question = self.post_question(user=self.u1)
+ self.assertEqual(1, question.revisions.all()[0].revision)
+ self.assertEqual(1, question.revisions.count())
+
+ question.apply_edit(edited_by=self.u1, text="blah2", comment="blahc2")
+ self.assertEqual(2, question.revisions.all()[0].revision)
+ self.assertEqual(2, question.revisions.count())
+
+ 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())
diff --git a/askbot/tests/utils.py b/askbot/tests/utils.py
index 03478419..54a2a0ec 100644
--- a/askbot/tests/utils.py
+++ b/askbot/tests/utils.py
@@ -1,6 +1,7 @@
"""utility functions used by Askbot test cases
"""
from django.test import TestCase
+from django.utils.unittest.compatibility import wraps
from askbot import models
def create_user(
@@ -176,3 +177,46 @@ class AskbotTestCase(TestCase):
)
return comment
+
+"""
+Some test decorators, taken from Django-1.3
+"""
+
+
+class SkipTest(Exception):
+ """
+ Raise this exception in a test to skip it.
+
+ Usually you can use TestResult.skip() or one of the skipping decorators
+ instead of raising this directly.
+ """
+
+
+def _id(obj):
+ return obj
+
+
+def skip(reason):
+ """
+ Unconditionally skip a test.
+ """
+ def decorator(test_item):
+ if not (isinstance(test_item, type) and issubclass(test_item, TestCase)):
+ @wraps(test_item)
+ def skip_wrapper(*args, **kwargs):
+ raise SkipTest(reason)
+ test_item = skip_wrapper
+
+ test_item.__unittest_skip__ = True
+ test_item.__unittest_skip_why__ = reason
+ return test_item
+ return decorator
+
+
+def skipIf(condition, reason):
+ """
+ Skip a test if the condition is true.
+ """
+ if condition:
+ return skip(reason)
+ return _id
diff --git a/askbot/urls.py b/askbot/urls.py
index eba051c5..acab5f4b 100644
--- a/askbot/urls.py
+++ b/askbot/urls.py
@@ -6,7 +6,6 @@ from django.conf import settings
from django.conf.urls.defaults import url, patterns, include
from django.conf.urls.defaults import handler500, handler404
from django.contrib import admin
-from django.utils.translation import ugettext as _
from askbot import views
from askbot.feed import RssLastestQuestionsFeed, RssIndividualQuestionFeed
from askbot.sitemap import QuestionsSitemap
@@ -15,6 +14,11 @@ 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:
+ from django.utils.translation import ugettext as _
+else:
+ _ = lambda s:s
+
feeds = {
'rss': RssLastestQuestionsFeed,
'question':RssIndividualQuestionFeed
@@ -486,7 +490,7 @@ urlpatterns = patterns('',
url(
r'^jsi18n/$',
'django.views.i18n.javascript_catalog',
- {'packages': ('askbot',)},
+ {'domain': 'djangojs','packages': ('askbot',)},
name = 'askbot_jsi18n'
),
)
diff --git a/askbot/utils/forms.py b/askbot/utils/forms.py
index 575416bc..c3bccf24 100644
--- a/askbot/utils/forms.py
+++ b/askbot/utils/forms.py
@@ -11,19 +11,19 @@ import logging
import urllib
DEFAULT_NEXT = '/' + getattr(settings, 'ASKBOT_URL')
-def clean_next(next):
- if next is None:
- return DEFAULT_NEXT
+def clean_next(next, default = None):
+ if next is None or not next.startswith('/'):
+ if default:
+ return default
+ else:
+ return DEFAULT_NEXT
next = str_to_unicode(urllib.unquote(next), 'utf-8')
next = next.strip()
- if next.startswith('/'):
- logging.debug('next url is %s' % next)
- return next
- logging.debug('next url is %s' % DEFAULT_NEXT)
- return DEFAULT_NEXT
+ logging.debug('next url is %s' % next)
+ return next
-def get_next_url(request):
- return clean_next(request.REQUEST.get('next'))
+def get_next_url(request, default = None):
+ return clean_next(request.REQUEST.get('next'), default)
class StrippedNonEmptyCharField(forms.CharField):
def clean(self,value):
diff --git a/askbot/views/meta.py b/askbot/views/meta.py
index 301a0925..493ab8ec 100644
--- a/askbot/views/meta.py
+++ b/askbot/views/meta.py
@@ -33,13 +33,13 @@ def config_variable(request, variable_name = None, mimetype = None):
return HttpResponse(output, mimetype = mimetype)
def about(request, template='about.html'):
- return generic_view(request, template = template, page_class = 'meta')
+ return generic_view(request, template = template, page_class = 'meta')
def page_not_found(request, template='404.html'):
- return generic_view(request, template)
+ return generic_view(request, template)
def server_error(request, template='500.html'):
- return generic_view(request, template)
+ return generic_view(request, template)
def faq(request):
if getattr(askbot_settings, 'FORUM_FAQ',''):
@@ -64,7 +64,7 @@ def faq(request):
#'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)
@csrf.csrf_protect
@@ -72,9 +72,10 @@ def feedback(request):
data = {'page_class': 'meta'}
form = None
if request.method == "POST":
- form = FeedbackForm(request.POST)
+ form = FeedbackForm(is_auth = request.user.is_authenticated(),
+ data = request.POST)
if form.is_valid():
- if not request.user.is_authenticated:
+ if not request.user.is_authenticated():
data['email'] = form.cleaned_data.get('email',None)
data['message'] = form.cleaned_data['message']
data['name'] = form.cleaned_data.get('name',None)
@@ -85,7 +86,8 @@ def feedback(request):
request.user.message_set.create(message=msg)
return HttpResponseRedirect(get_next_url(request))
else:
- form = FeedbackForm(initial={'next':get_next_url(request)})
+ form = FeedbackForm(is_auth = request.user.is_authenticated(),
+ initial={'next':get_next_url(request)})
data['form'] = form
return render_into_skin('feedback.html', data, request)
@@ -96,7 +98,7 @@ def privacy(request):
def badges(request):#user status/reputation system
#todo: supplement database data with the stuff from badges.py
- known_badges = badge_data.BADGES.keys()
+ known_badges = badge_data.BADGES.keys()
badges = BadgeData.objects.filter(slug__in = known_badges).order_by('slug')
my_badges = []
if request.user.is_authenticated():
diff --git a/askbot/views/readers.py b/askbot/views/readers.py
index bb2cbe65..7aeba23b 100644
--- a/askbot/views/readers.py
+++ b/askbot/views/readers.py
@@ -23,6 +23,8 @@ 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
import askbot
from askbot import exceptions
@@ -126,13 +128,13 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
)
tag_list_type = askbot_settings.TAG_LIST_FORMAT
-
+
#force cloud to sort by name
if tag_list_type == 'cloud':
related_tags = sorted(related_tags, key = operator.attrgetter('name'))
font_size = extra_tags.get_tag_font_size(related_tags)
-
+
paginator = Paginator(qs, search_state.page_size)
if paginator.num_pages < search_state.page:
@@ -155,6 +157,24 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
'parameters': search_state.make_parameters(),
}
+ # We need to pass the rss feed url based
+ # on the search state to the template.
+ # We use QueryDict to get a querystring
+ # from dicts and arrays. Much cleaner
+ # than parsing and string formating.
+ rss_query_dict = QueryDict("").copy()
+ if search_state.query:
+ # We have search string in session - pass it to
+ # the QueryDict
+ rss_query_dict.update({"q": search_state.query})
+ if search_state.tags:
+ # 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()
+
if request.is_ajax():
q_count = paginator.count
@@ -176,11 +196,12 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
}
if q_count > search_state.page_size:
- paginator_tpl = get_template('blocks/paginator.html', request)
+ 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 = {
- 'paginator_context': extra_tags.cnprog_paginator(paginator_context)
+ 'context': extra_tags.cnprog_paginator(paginator_context),
+ 'questions_count': q_count
}
paginator_html = paginator_tpl.render(Context(data))
else:
@@ -201,6 +222,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
'questions': list(),
'related_tags': list(),
'faces': list(),
+ 'feed_url': context_feed_url,
'query_string': search_state.query_string(),
'parameters': search_state.make_parameters(),
}
@@ -212,7 +234,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
'%(badge_count)d %(badge_level)s badges',
count
) % {
- 'badge_count': count,
+ 'badge_count': count,
'badge_level': badge_levels[level]
}
@@ -229,78 +251,20 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
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,
+ 'language_code': translation.get_language(),
+ 'query': search_state.query,
+ }
- for question in page.object_list:
- timestamp = question.last_activity_at
- author = question.last_activity_by
-
- if question.score == 0:
- votes_class = 'no-votes'
- else:
- votes_class = 'some-votes'
-
- if question.answer_count == 0:
- answers_class = 'no-answers'
- elif question.answer_accepted:
- answers_class = 'accepted'
- else:
- answers_class = 'some-answers'
-
- if question.view_count == 0:
- views_class = 'no-views'
- else:
- views_class = 'some-views'
-
- country_code = None
- if author.country and author.show_country:
- country_code = author.country.code
-
- question_data = {
- 'title': question.title,
- 'id': question.id,
- 'tags': question.get_tag_names(),
- 'tag_list_type': tag_list_type,
- 'font_size': font_size,
- 'votes': extra_filters.humanize_counter(question.score),
- 'votes_class': votes_class,
- 'votes_word': ungettext('vote', 'votes', question.score),
- 'answers': extra_filters.humanize_counter(question.answer_count),
- 'answers_class': answers_class,
- 'answers_word': ungettext('answer', 'answers', question.answer_count),
- 'views': extra_filters.humanize_counter(question.view_count),
- 'views_class': views_class,
- 'views_word': ungettext('view', 'views', question.view_count),
- 'timestamp': unicode(timestamp),
- 'timesince': functions.diff_date(timestamp),
- 'u_id': author.id,
- 'u_name': author.username,
- 'u_rep': author.reputation,
- 'u_gold': author.gold,
- 'u_gold_title': pluralize_badge_count(
- author.gold,
- const.GOLD_BADGE
- ),
- 'u_gold_badge_symbol': const.BADGE_DISPLAY_SYMBOL,
- 'u_gold_css_class': gold_badge_css_class,
- 'u_silver': author.silver,
- 'u_silver_title': pluralize_badge_count(
- author.silver,
- const.SILVER_BADGE
- ),
- 'u_silver_badge_symbol': const.BADGE_DISPLAY_SYMBOL,
- 'u_silver_css_class': silver_badge_css_class,
- 'u_bronze': author.bronze,
- 'u_bronze_title': pluralize_badge_count(
- author.bronze,
- const.BRONZE_BADGE
- ),
- 'u_bronze_badge_symbol': const.BADGE_DISPLAY_SYMBOL,
- 'u_bronze_css_class': bronze_badge_css_class,
- 'u_country_code': country_code,
- 'u_is_anonymous': question.is_anonymous,
- }
- ajax_data['questions'].append(question_data)
-
+ questions_html = questions_tpl.render(Context(data))
+ ajax_data['questions'] = questions_html.replace('\n','')
return HttpResponse(
simplejson.dumps(ajax_data),
mimetype = 'application/json'
@@ -313,6 +277,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
reset_method_count += 1
if meta_data.get('author_name',None):
reset_method_count += 1
+
template_data = {
'active_tab': 'questions',
@@ -321,7 +286,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
'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),
+ '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',
@@ -342,6 +307,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
'update_avatar_data': schedules.should_update_avatar_data(request),
'query_string': search_state.query_string(),
'parameters': search_state.make_parameters(),
+ 'feed_url': context_feed_url,
}
assert(request.is_ajax() == False)
@@ -356,7 +322,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S
def tags(request):#view showing a listing of available tags - plain list
tag_list_type = askbot_settings.TAG_LIST_FORMAT
-
+
if tag_list_type == 'list':
stag = ""
@@ -405,15 +371,15 @@ def tags(request):#view showing a listing of available tags - plain list
'active_tab': 'tags',
'page_class': 'tags-page',
'tags' : tags,
- 'tag_list_type' : tag_list_type,
+ 'tag_list_type' : tag_list_type,
'stag' : stag,
'tab_id' : sortby,
'keywords' : stag,
'paginator_context' : paginator_context
}
-
+
else:
-
+
stag = ""
sortby = request.GET.get('sort', 'name')
@@ -433,20 +399,22 @@ def tags(request):#view showing a listing of available tags - plain list
'active_tab': 'tags',
'page_class': 'tags-page',
'tags' : tags,
- 'tag_list_type' : tag_list_type,
+ 'tag_list_type' : tag_list_type,
'font_size' : font_size,
'stag' : stag,
'tab_id' : sortby,
'keywords' : stag,
}
-
+
return render_into_skin('tags.html', data, request)
@csrf.csrf_protect
+#@cache_page(60 * 5)
def question(request, id):#refactor - long subroutine. display question body, answers and comments
- """view that displays body of the question and
+ """view that displays body of the question and
all answers to it
"""
+ #process url parameters
#todo: fix inheritance of sort method from questions
default_sort_method = request.session.get('questions_sort_method', 'votes')
form = ShowQuestionForm(request.GET, default_sort_method)
@@ -465,7 +433,14 @@ def question(request, id):#refactor - long subroutine. display question body, an
#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:
- #comments
+ #if url calls for display of a specific comment,
+ #check that comment exists, that it belongs to
+ #the current question
+ #if it is an answer comment and the answer is hidden -
+ #redirect to the default view of the question
+ #if the question is hidden - redirect to the main page
+ #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:
@@ -488,7 +463,10 @@ def question(request, id):#refactor - long subroutine. display question body, an
return HttpResponseRedirect(reverse('index'))
elif show_answer is not None:
- #answers
+ #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
try:
show_post = get_object_or_404(models.Answer, id = show_answer)
if str(show_post.question.id) != id:
@@ -522,13 +500,11 @@ def question(request, id):#refactor - long subroutine. display question body, an
answers = answers.select_related(depth=1)
user_answer_votes = {}
- for answer in answers:
- vote = answer.get_user_vote(request.user)
- if vote is not None and not user_answer_votes.has_key(answer.id):
- vote_value = -1
- if vote.is_upvote():
- vote_value = 1
- user_answer_votes[answer.id] = vote_value
+ 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]
@@ -544,10 +520,10 @@ def question(request, id):#refactor - long subroutine. display question body, an
filtered_answers.append(answer)
#resolve page number and comment number for permalinks
- comment_order_number = None
+ show_comment_position = None
if show_comment:
show_page = show_comment.get_page_number(answers = filtered_answers)
- comment_order_number = show_comment.get_order_number()
+ show_comment_position = show_comment.get_order_number()
elif show_answer:
show_page = show_post.get_page_number(answers = filtered_answers)
@@ -571,7 +547,7 @@ def question(request, id):#refactor - long subroutine. display question body, an
if updated_who != request.user:
if last_seen:
if last_seen < updated_when:
- update_view_count = True
+ update_view_count = True
else:
update_view_count = True
@@ -588,7 +564,7 @@ def question(request, id):#refactor - long subroutine. display question body, an
request.user.visit_question(question)
#3) send award badges signal for any badges
- #that are awarded for question views
+ #that are awarded for question views
award_badges_signal.send(None,
event = 'view_question',
actor = request.user,
@@ -609,19 +585,19 @@ def question(request, id):#refactor - long subroutine. display question body, an
paginator_context = extra_tags.cnprog_paginator(paginator_data)
favorited = question.has_favorite_by_user(request.user)
+ user_question_vote = 0
if request.user.is_authenticated():
- question_vote = question.votes.select_related().filter(user=request.user)
- else:
- question_vote = None #is this correct?
- if question_vote is not None and question_vote.count() > 0:
- question_vote = question_vote[0]
-
+ votes = question.votes.select_related().filter(user=request.user)
+ if votes.count() > 0:
+ user_question_vote = int(votes[0])
+ else:
+ user_question_vote = 0
data = {
'page_class': 'question-page',
'active_tab': 'questions',
'question' : question,
- 'question_vote' : question_vote,
+ 'user_question_vote' : user_question_vote,
'question_comment_count':question.comments.count(),
'answer' : AnswerForm(question,request.user),
'answers' : page_objects.object_list,
@@ -634,7 +610,7 @@ def question(request, id):#refactor - long subroutine. display question body, an
'paginator_context' : paginator_context,
'show_post': show_post,
'show_comment': show_comment,
- 'comment_order_number': comment_order_number
+ 'show_comment_position': show_comment_position
}
return render_into_skin('question.html', data, request)
@@ -686,3 +662,4 @@ def get_question_body(request):
questions_dict['question-%s' % question.id] = question.summary
return {'questions-titles': questions_dict}
+ return {'questions-titles': questions_dict}
diff --git a/askbot/views/users.py b/askbot/views/users.py
index f1f29f71..52e05842 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -1,7 +1,7 @@
"""
:synopsis: user-centric views for askbot
-This module includes all views that are specific to a given user - his or her profile,
+This module includes all views that are specific to a given user - his or her profile,
and other views showing profile-related information.
Also this module includes the view listing all forum users.
@@ -35,30 +35,17 @@ from askbot.models.badges import award_badges_signal
from askbot.skins.loaders import render_into_skin
from askbot.templatetags import extra_tags
-question_type = ContentType.objects.get_for_model(models.Question)
-answer_type = ContentType.objects.get_for_model(models.Answer)
-comment_type = ContentType.objects.get_for_model(models.Comment)
-question_revision_type = ContentType.objects.get_for_model(
- models.QuestionRevision
- )
-
-answer_revision_type = ContentType.objects.get_for_model(
- models.AnswerRevision
- )
-repute_type = ContentType.objects.get_for_model(models.Repute)
-question_type_id = question_type.id
-answer_type_id = answer_type.id
-comment_type_id = comment_type.id
-question_revision_type_id = question_revision_type.id
-answer_revision_type_id = answer_revision_type.id
-repute_type_id = repute_type.id
#todo: queries in the user activity summary view must be redone
-def get_related_object_type_name(content_type_id):
- if content_type_id in (question_type_id, question_revision_type_id,):
+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 in (answer_type_id, answer_revision_type_id,):
+ 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
def owner_or_moderator_required(f):
@@ -72,7 +59,7 @@ def owner_or_moderator_required(f):
params = '?next=%s' % request.path
return HttpResponseRedirect(reverse('user_signin') + params)
return f(request, profile_owner, context)
- return wrapped_func
+ return wrapped_func
def users(request):
is_paginated = True
@@ -97,7 +84,7 @@ def users(request):
objects_list = Paginator(
models.User.objects.all().order_by(
order_by_parameter
- ),
+ ),
const.USERS_PAGE_SIZE
)
base_url = reverse('users') + '?sort=%s&' % sortby
@@ -108,7 +95,7 @@ def users(request):
username__icontains = suser
).order_by(
'-reputation'
- ),
+ ),
const.USERS_PAGE_SIZE
)
base_url = reverse('users') + '?name=%s&sort=%s&' % (suser, sortby)
@@ -142,7 +129,7 @@ def users(request):
@csrf.csrf_protect
def user_moderate(request, subject, context):
- """user subview for moderation
+ """user subview for moderation
"""
moderator = request.user
@@ -171,7 +158,7 @@ def user_moderate(request, subject, context):
if send_message_form.is_valid():
subject_line = send_message_form.cleaned_data['subject_line']
body_text = send_message_form.cleaned_data['body_text']
-
+
try:
send_mail(
subject_line = subject_line,
@@ -241,7 +228,7 @@ def set_new_email(user, new_email, nomessage=False):
user.email_isvalid = False
user.save()
#if askbot_settings.EMAIL_VALIDATION == True:
- # send_new_email_key(user,nomessage=nomessage)
+ # send_new_email_key(user,nomessage=nomessage)
@login_required
@csrf.csrf_protect
@@ -306,7 +293,26 @@ def user_stats(request, user, context):
'last_activity_by__silver',
'last_activity_by__bronze'
)[:100]
+
questions = list(questions)
+
+ #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
@@ -381,8 +387,9 @@ def user_stats(request, user, context):
'page_title' : _('user profile overview'),
'user_status_for_display': user.get_status_display(soft = True),
'questions' : questions,
- 'question_type' : question_type,
- 'answer_type' : answer_type,
+ '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,
'up_votes' : up_votes,
@@ -414,7 +421,7 @@ def user_recent(request, user, context):
self.summary = summary
slug_title = slugify(title)
self.title_link = reverse(
- 'question',
+ 'question',
kwargs={'id':question_id}
) + u'%s' % slug_title
if int(answer_id) > 0:
@@ -444,7 +451,7 @@ def user_recent(request, user, context):
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=[question_type_id, user.id, const.TYPE_ACTIVITY_ASK_QUESTION],
+ params=[ContentType.objects.get_for_model(models.Question).id, user.id, const.TYPE_ACTIVITY_ASK_QUESTION],
order_by=['-activity.active_at']
).values(
'title',
@@ -456,11 +463,11 @@ def user_recent(request, user, context):
for q in questions:
q_event = Event(
- q['active_at'],
- q['activity_type'],
- q['title'],
- '',
- '0',
+ q['active_at'],
+ q['activity_type'],
+ q['title'],
+ '',
+ '0',
q['question_id']
)
activities.append(q_event)
@@ -476,10 +483,10 @@ def user_recent(request, user, context):
'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 '+
+ 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=[answer_type_id, user.id, const.TYPE_ACTIVITY_ANSWER],
+ params=[ContentType.objects.get_for_model(models.Answer).id, user.id, const.TYPE_ACTIVITY_ANSWER],
order_by=['-activity.active_at']
).values(
'title',
@@ -508,7 +515,7 @@ def user_recent(request, user, context):
'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=[comment_type_id, question_type_id, user.id, const.TYPE_ACTIVITY_COMMENT_QUESTION],
+ 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',
@@ -538,7 +545,7 @@ def user_recent(request, user, context):
'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=[comment_type_id, answer_type_id, user.id, const.TYPE_ACTIVITY_COMMENT_ANSWER],
+ 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',
@@ -556,18 +563,20 @@ def user_recent(request, user, context):
# question revisions
revisions = models.Activity.objects.extra(
select={
- 'title' : 'question_revision.title',
- 'question_id' : 'question_revision.question_id',
+ 'title' : 'askbot_postrevision.title',
+ 'question_id' : 'askbot_postrevision.question_id',
'added_at' : 'activity.active_at',
'activity_type' : 'activity.activity_type',
- 'summary' : 'question_revision.summary'
+ 'summary' : 'askbot_postrevision.summary'
},
- tables=['activity', 'question_revision', 'question'],
- where=['activity.content_type_id = %s AND activity.object_id = question_revision.id AND '+
- 'question_revision.id=question.id AND NOT question.deleted AND '+
- 'activity.user_id = question_revision.author_id AND activity.user_id = %s AND '+
- 'activity.activity_type=%s'],
- params=[question_revision_type_id, user.id, const.TYPE_ACTIVITY_UPDATE_QUESTION],
+ 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',
@@ -590,16 +599,17 @@ def user_recent(request, user, context):
'answer_id' : 'answer.id',
'added_at' : 'activity.active_at',
'activity_type' : 'activity.activity_type',
- 'summary' : 'answer_revision.summary'
+ 'summary' : 'askbot_postrevision.summary'
},
- tables=['activity', 'answer_revision', 'question', 'answer'],
-
- where=['activity.content_type_id = %s AND activity.object_id = answer_revision.id AND '+
- 'activity.user_id = answer_revision.author_id AND activity.user_id = %s AND '+
- 'answer_revision.answer_id=answer.id AND answer.question_id = question.id AND '+
- 'NOT question.deleted AND NOT answer.deleted AND '+
- 'activity.activity_type=%s'],
- params=[answer_revision_type_id, user.id, const.TYPE_ACTIVITY_UPDATE_ANSWER],
+ 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',
@@ -628,7 +638,7 @@ def user_recent(request, user, context):
'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=[answer_type_id, user.id, const.TYPE_ACTIVITY_MARK_ANSWER],
+ params=[ContentType.objects.get_for_model(models.Answer).id, user.id, const.TYPE_ACTIVITY_MARK_ANSWER],
order_by=['-activity.active_at']
).values(
'title',
@@ -662,7 +672,10 @@ def user_recent(request, user, context):
'activity_type'
)
for award in awards:
- related_object_type = get_related_object_type_name(award['content_type_id'])
+ 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'],
@@ -692,7 +705,7 @@ def user_recent(request, user, context):
@owner_or_moderator_required
def user_responses(request, user, context):
"""
- We list answers for question, comments, and
+ We list answers for question, comments, and
answer accepted by others for this user.
as well as mentions of the user
@@ -753,7 +766,7 @@ def user_responses(request, user, context):
#todo: agrupate users
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)
+ original_response['nested_responses'].append(response)
filtered_response_list[len(filtered_response_list)-1] = original_response
else:
filtered_response_list.append(response)
@@ -803,7 +816,7 @@ def user_votes(request, user, context):
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=[question_type_id, user.id],
+ params=[ContentType.objects.get_for_model(models.Question).id, user.id],
order_by=['-vote.id']
).values(
'title',
@@ -827,7 +840,7 @@ def user_votes(request, user, context):
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=[answer_type_id, user.id],
+ params=[ContentType.objects.get_for_model(models.Answer).id, user.id],
order_by=['-vote.id']
).values(
'title',
@@ -855,8 +868,8 @@ 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',
+ 'question__title',
+ 'question__id',
'user__username'
)
#prepare data for the graph
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index 8b07681a..5f073b37 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -274,7 +274,7 @@ def ask(request):#view used to ask a new question
else:
#attemp to get tags from search state
search_state = request.session.get('search_state', None)
- if search_state.tags:
+ if search_state and search_state.tags:
tags = ' '.join(search_state.tags)
form.initial['tags'] = tags
@@ -363,7 +363,7 @@ def edit_question(request, id):
if revision_form.is_valid():
# Replace with those from the selected revision
rev_id = revision_form.cleaned_data['revision']
- selected_revision = models.QuestionRevision.objects.get(
+ selected_revision = models.PostRevision.objects.question_revisions().get(
question = question,
revision = rev_id
)
@@ -448,7 +448,7 @@ def edit_answer(request, id):
if revision_form.is_valid():
# Replace with those from the selected revision
rev = revision_form.cleaned_data['revision']
- selected_revision = models.AnswerRevision.objects.get(
+ selected_revision = models.PostRevision.objects.answer_revisions().get(
answer = answer,
revision = rev
)